Sqlite FTS4获取查询中包含术语顺序的行

时间:2017-12-08 11:13:29

标签: sqlite

我的虚拟表是:

CREATE VIRTUAL TABLE docs USING fts4();

INSERT INTO docs(docid, content) VALUES(1, 'sqlite is a database');
INSERT INTO docs(docid, content) VALUES(2, 'my database is sqlite');

当我使用此查询时:

SELECT * FROM docs WHERE docs MATCH 'sqlite AND database';

它返回表中的两条记录,因为它们都包含术语“sqlite”和术语“数据库”。

现在,我想搜索包含术语“sqlite”的记录和使用此规则的术语“数据库”:

条款在文档中的显示顺序必须与它们在查询中的显示顺序相同(仅包含docid 1的文档)。

有可能吗?

1 个答案:

答案 0 :(得分:0)

FTS queries不能限制字词的顺序,短语搜索除外,这些字词搜索需要连续的字词(例如"sqlite database"sqlite is a database不匹配)。

之后你必须限制结果:

SELECT ... WHERE docs MATCH 'sqlite AND database'
             AND content LIKE '%sqlite%database%';