2015-07-21 116 views
0

我正在使用DB Browser for SQLite。 SQLite的fts3 says“FTS的文档主要是为支持布尔全文查询而设计的”。我使用fts4构建了一个虚拟表,并成功执行了几个WHERE ... MATCH查询。但下面的尝试会给出错误:如何在SQLite全文搜索中排除搜索词?

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

是在DB浏览器还是在SQLite中的问题?我怎么能写这个查询,所以它会工作?

+0

FTS查询语法在[documentation](http://www.sqlite.org/fts3.html#section_3)中进行了说明。 –

+0

我没有意识到我在问一个关于FTS查询语法的问题(我想查找“排除”并搜索“布尔”,而不是“设置操作”部分)。我以为我在问关于SQLite或DB浏览器。谢谢。 – Noumenon

回答

1

SQLite的全文服务(fts3)默认提供布尔模式,不需要搜索修饰符。数据库浏览器使用fts的standard query syntax,所以不支持。要排除的术语,这样做

SELECT * FROM indexed WHERE indexed MATCH 'sqlite -database'; 

编辑:但是,你不能排除在全文检索搜索条件:

一个FTS查询可能不完全由术语或词语前缀的使用连接到它们的一元“ - ”运算符进行查询。

您必须使用NOT LIKE。