SQLite、FTS、MATCH 和分隔列中的文本
Posted
技术标签:
【中文标题】SQLite、FTS、MATCH 和分隔列中的文本【英文标题】:SQLite, FTS, MATCH and separating text in a column 【发布时间】:2011-07-06 23:01:26 【问题描述】:我有一个 SQLite 数据库,其中有一个使用 FTS4 创建的虚拟表“myTable”,其中一列“myColumn”文本使用|
作为分隔符。
我使用SELECT * FROM myTable WHERE myColumn MATCH 'out to';
查询这个数据库,我得到了看起来像"...out|to..."
但没有“out to”子字符串的条目。
当我将|
替换为;
之类的标点符号时,也会发生同样的事情。 (请注意 SQLite 文档明确指出您不能使用 _
作为分隔符。)
为什么会这样,我该如何预防?
【问题讨论】:
【参考方案1】:FTS 的默认标记器会从索引数据以及您的输入查询中删除任何标点符号。即使您查询MATCH 'out/to'
,它也会找到条目“... out to ...”的匹配项
解决方案是使用短语搜索 MATCH '"out to"'
。如果您希望在没有按该顺序排列这些单词的记录中查找这些单词,则它不会起作用。
【讨论】:
以上是关于SQLite、FTS、MATCH 和分隔列中的文本的主要内容,如果未能解决你的问题,请参考以下文章