我的虚拟表是:
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的文档)。
有可能吗?
答案 0 :(得分:0)
FTS queries不能限制字词的顺序,短语搜索除外,这些字词搜索需要连续的字词(例如"sqlite database"
与sqlite is a database
不匹配)。
之后你必须限制结果:
SELECT ... WHERE docs MATCH 'sqlite AND database'
AND content LIKE '%sqlite%database%';