我有一个SQLite数据库,其中包含使用FTS4创建的虚拟表“myTable”,其中一列“myColumn”使用|
作为分隔字符。
我使用SELECT * FROM myTable WHERE myColumn MATCH 'out to';
查询此数据库,并且我的搜索条目看起来像"...out|to..."
但没有“out to”子字符串。
当我用|
之类的标点符号替换;
时,会发生同样的事情。 (请注意,SQLite文档明确指出您不能将_
用作分隔符。)
为什么会这样,我该如何防止这种情况?
答案 0 :(得分:1)
FTS的默认标记生成器会从索引数据中删除所有标点符号,也会从输入查询中删除标点符号。即使您查询MATCH 'out/to'
,它也会找到一个匹配条目“... out to ...”
对此的解决方案是使用短语搜索MATCH '"out to"'
。如果您希望在记录中找到那些没有按顺序排列的单词,那么它将无效。