无法从SQLite FTS3检索特殊字符

3

我在场景中遇到了一些特殊字符的问题。我使用了fts3创建了一个sqlite数据库。

当我使用 SELECT col_1, col_2, offsets(table) FROM table WHERE table MATCH 'h*' LIMIT 50;

我能够获取以h开头的单词。

但是当我使用

SELECT col_1, col_2, offsets(table) FROM table WHERE table MATCH '@*' LIMIT 50;

我得不到以@开头的字符串。

我错在哪里?任何关于方法的指针都会很好。

1个回答

0

我认为你描述的行为是因为SQLite FTS3默认使用名为“simple”的分词器。字符@被丢弃,因为它不是字母数字字符,其UTF代码点也不大于127。我的理解是,FTS不适用于搜索特殊字符,而适用于搜索自然文本。

我建议的解决方法不是使用FTS进行此类查询,而是使用LIKE运算符。或者您可以尝试搜索其他可用的分词器,或者使用C编写自己的分词器


非常感谢,虽然我有点晚了。 - Arup

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接