SQLite,FTS,MATCH和分隔列中的文本

时间:2011-07-06 23:01:26

标签: sqlite match full-text-search

我有一个SQLite数据库,其中包含使用FTS4创建的虚拟表“myTable”,其中一列“myColumn”使用|作为分隔字符。

我使用SELECT * FROM myTable WHERE myColumn MATCH 'out to';查询此数据库,并且我的搜索条目看起来像"...out|to..."但没有“out to”子字符串。

当我用|之类的标点符号替换;时,会发生同样的事情。 (请注意,SQLite文档明确指出您不能将_用作分隔符。)

为什么会这样,我该如何防止这种情况?

1 个答案:

答案 0 :(得分:1)

FTS的默认标记生成器会从索引数据中删除所有标点符号,也会从输入查询中删除标点符号。即使您查询MATCH 'out/to',它也会找到一个匹配条目“... out to ...” 对此的解决方案是使用短语搜索MATCH '"out to"'。如果您希望在记录中找到那些没有按顺序排列的单词,那么它将无效。