在SQLite中优化全文搜索

时间:2013-03-13 18:40:38

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

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

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

1 个答案:

答案 0 :(得分: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'