如何在SQLite全文搜索中排除搜索词?



我使用数据库浏览器的SQLite。SQLite的fts3的文档说"FTS主要是为了支持布尔全文查询而设计的"。我使用fts4构建了一个虚拟表,并成功执行了几个WHERE…匹配查询。但是下面的尝试会产生错误:

SELECT id FROM histsearch WHERE id MATCH ("-1456" IN BOOLEAN MODE);
SELECT id FROM histsearch WHERE NOT EXIST id MATCH ("1457");

是问题在DB浏览器或在SQLite?我还能怎么写这个查询使它工作呢?

SQLite的全文服务(fts3)基本上默认提供布尔模式,不需要搜索修饰符。DB Browser使用fts的标准查询语法,因此不支持NOT。要排除一个术语,执行类似

的操作
SELECT * FROM indexed WHERE indexed MATCH 'sqlite -database';

编辑:但是,您不能仅在全文搜索中排除搜索词:

FTS查询不能完全由术语或带有一元"-"操作符的术语前缀查询组成。

你必须使用NOT LIKE

最新更新