【问题标题】:How can you exclude a search term in an SQLite fulltext search?如何在 SQLite 全文搜索中排除搜索词?
【发布时间】:2015-07-21 16:09:22
【问题描述】:

我正在为 SQLite 使用数据库浏览器。 SQLite 的 fts3 says 的文档“FTS 主要设计用于支持布尔全文查询”。我使用 fts4 构建了一个虚拟表并成功执行了几个 WHERE ... MATCH 查询。但是以下尝试会出错:

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

问题出在 DB Browser 还是 SQLite 中?我还能如何编写此查询以使其正常工作?

【问题讨论】:

  • FTS 查询语法在documentation 中解释。
  • 我没有意识到我在问一个关于 FTS 查询语法的问题(我浏览了该部分以寻找“排除”并搜索“布尔”,而不是“设置操作”部分)。我以为我在问 SQLite 或 DB Browser。谢谢。

标签: sqlite full-text-search


【解决方案1】:

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

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

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

FTS 查询可能不完全由带有一元“-”运算符的术语或术语前缀查询组成。

您必须为此使用 NOT LIKE。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 2010-12-24
    • 2011-01-01
    • 1970-01-01
    • 2011-11-08
    相关资源
    最近更新 更多