gpt4 book ai didi

database - 如何在H2数据库中使用FULL-TEXT SEARCH?

转载 作者:太空狗 更新时间:2023-10-30 01:45:35 25 4
gpt4 key购买 nike

考虑下面的例子

CREATE ALIAS IF NOT EXISTS FT_INIT FOR "org.h2.fulltext.FullText.init";
CALL FT_INIT();
DROP TABLE IF EXISTS TEST;
CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR);
INSERT INTO TEST VALUES(1, 'Hello World');
CALL FT_CREATE_INDEX('PUBLIC', 'TEST', NULL);

我已经执行了以下查询

SELECT * FROM FT_SEARCH('Hello', 0, 0);

但此查询返回 "PUBLIC"."TEST"WHERE "ID"=1

  1. 我是否必须再次执行此 "PUBLIC"."TEST"WHERE "ID"=1 以获得包含“Hello”字样的记录?
  2. 从 FT_Search 中搜索所有包含 'ell' 词的记录的查询是什么。比如像H2原生全文搜索中的%ell%

最佳答案

  1. 是的,使用 FT_SEARCH 的查询中的每一行都代表一个模式表行,其中找到了一个关键字。搜索不区分大小写,FT_SEARCHtext 参数可能包含多个单词。例如,

    DELETE FROM TEST;
    INSERT INTO TEST VALUES(1, 'Hello World');
    INSERT INTO TEST VALUES(2, 'Goodbye World');
    INSERT INTO TEST VALUES(3, 'Hello Goodbye');
    CALL FT_REINDEX();
    SELECT * FROM FT_SEARCH('hello goodbye', 0, 0);

    只返回第三行:

    QUERY                           SCORE  
    "PUBLIC"."TEST" WHERE "ID"=3 1.0

    另请注意,FT_SEARCH_DATA 可用于检索数据本身。例如,

    SELECT T.* FROM FT_SEARCH_DATA('hello', 0, 0) FT, TEST T
    WHERE FT.TABLE='TEST' AND T.ID=FT.KEYS[0];

    返回包含关键字的两行:

    ID   NAME  
    1 Hello World
    3 Hello Goodbye
  2. Apache Lucene支持wildcard搜索,虽然前导通配符(例如 *ell)往往很昂贵。

关于database - 如何在H2数据库中使用FULL-TEXT SEARCH?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6641737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com