如何在H2数据库中使用FULL-TEXT SEARCH?
发布时间:2020-12-12 06:59:18 所属栏目:MsSql教程 来源:网络整理
导读:请考虑以下示例 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(
请考虑以下示例
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); 但是这个查询返回“PUBLIC”.“TEST”WHERE“ID”= 1. >我是否必须再次执行此“PUBLIC”.“TEST”WHERE“ID”= 1以获取包含“Hello”字样的记录? 解决方法>是,使用FT_SEARCH的查询中的每一行代表一个架构表行,其中找到了一个关键字.搜索不区分大小写,FT_SEARCH的文本参数可能包含多个单词.例如,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); 仅返回第三行: QUERY SCORE "PUBLIC"."TEST" WHERE "ID"=3 1.0 另请注意,FT_SEARCH_DATA可用于检索数据本身.例如, SELECT T.* FROM FT_SEARCH_DATA('hello',0) FT,TEST T WHERE FT.TABLE='TEST' AND T.ID=FT.KEYS[0]; 返回包含关键字的两行: ID NAME 1 Hello World 3 Hello Goodbye > Apache Lucene支持wildcard搜索,虽然领先的通配符(例如* ell)往往很昂贵. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |