加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

如何在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中搜索包含’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)往往很昂贵.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读