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

前端之家收集整理的这篇文章主要介绍了如何在H2数据库中使用FULL-TEXT SEARCH?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
请考虑以下示例
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中搜索包含’ell’字样的所有记录的查询是什么.例如在H2 Native全文搜索中的%ell%

解决方法

>是,使用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)往往很昂贵.

原文链接:https://www.f2er.com/mssql/77407.html

猜你在找的MsSQL相关文章