【问题标题】:Optimizing full text search in SQLite优化 SQLite 中的全文搜索
【发布时间】:2013-03-13 18:40:37
【问题描述】:

我正在使用全文搜索来查找巨大树结构中的某些项目。大多数时候我只对匹配节点下的项目感兴趣。但是当我使用 select * from MYTABLE where match 'XXX' 时,它会在整个树结构中进行全文搜索。

有没有一种方法可以指定 MYTABLE 中用于全文搜索的行? (即匹配“XXX”)。任何提示将不胜感激!

【问题讨论】:

    标签: sqlite optimization full-text-search string-matching


    【解决方案1】:

    在 FTS 表上有效工作的唯一查询是 MATCH 搜索和 rowid/docid 搜索。

    因此,要搜索子树,您应该使子树(根)的 ID 成为正在搜索的全文的一部分。 请注意,大多数分词器会丢弃间断字符,因此 ID 应该是一个句子,其中的单词指定了从根到子树的路径。 例如:

    SELECT *
    FROM MyTable
    WHERE MyTable MATCH 'ID:"root 3 1 4" Text:whatever'
    

    如果您在每个单词中包含树级别,您可能会增加 ID 中单词的选择性:

    SELECT *
    FROM MyTable
    WHERE MyTable MATCH 'ID:"1x3 2x1 3x4" Text:whatever'
    

    【讨论】:

      猜你喜欢
      • 2011-08-29
      • 2010-12-01
      • 2019-05-16
      • 2011-09-24
      • 2011-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-19
      相关资源
      最近更新 更多