无法从sqlite fts3中检索特殊字符

时间:2012-02-08 05:21:43

标签: android database sqlite fts3

我在我的场景中遇到一些特殊字符的问题。 我有一个使用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 :(得分:0)

我认为您描述的行为是因为SQLite FTS3 uses tokenizer called "simple" by default。字符@被丢弃,因为它不是字母数字字符,其UTF代码点不大于127.我对此的解释是FTS不是用于搜索特殊字符,而是用于搜索自然文本。

我建议的修复不是使用FTS进行此类查询,而是使用LIKE运算符。或者您可以尝试搜索其他可用的标记符或write your on in C