1

我正在考虑使用 Trigram Tokenizer 来支持 FTS 中的子字符串匹配。

参考:https ://sqlite.org/fts5.html#the_experimental_trigram_tokenizer

我创建了一个虚拟表和数据,如下所示:

CREATE VIRTUAL TABLE tri_test USING fts5(a, tokenize="trigram");
INSERT INTO tri_test VALUES('abcde\fghij KLMNOPQRST uvwxyz');

但是,当我使用具有非字母数字字符(如反斜杠 (\))的搜索文本进行选择查询时,它会抛出错误。

SELECT * FROM tri_test('cde\fg');

错误:

Execution finished with errors.
Result: fts5: syntax error near "\"
At line 74:
SELECT * FROM tri_test('cde\fg');

当我尝试使用 MATCH 运算符时也会出现同样的问题

SELECT * FROM tri_test where tri_test MATCH 'cde\fg';

有没有办法逃脱这样的角色?请帮忙!

4

1 回答 1

0

我们可以通过在要搜索的字符串周围添加双引号来转义这些特殊字符。

SELECT * FROM tri_test where tri_test MATCH '"cde\fg"';
于 2021-07-07T09:13:09.500 回答