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 和分隔列中的文本的主要内容,如果未能解决你的问题,请参考以下文章

在 sqlite fts5 查询中使用 Match 但需要更多地控制排名?

如何停止。在 SQLite FTS4 中被视为分隔符

如何查找 FTS5 和 MATCH 之间的记录?

SQLite、文本搜索 FTS 等

带有 FTS4 表的 sqlite3:查询返回错误的行

SQL FTS 和比较语句