我在我的场景中遇到一些特殊字符的问题。 我有一个使用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;
我没有收到以@开头的字符串。
我哪里错了?关于进近的任何指针都会很棒。
答案 0 :(得分:0)
我认为您描述的行为是因为SQLite FTS3 uses tokenizer called "simple" by default。字符@被丢弃,因为它不是字母数字字符,其UTF代码点不大于127.我对此的解释是FTS不是用于搜索特殊字符,而是用于搜索自然文本。
我建议的修复不是使用FTS进行此类查询,而是使用LIKE运算符。或者您可以尝试搜索其他可用的标记符或write your on in C。