在进行FTS搜索时转义特定字符

时间:2019-04-04 03:44:23

标签: sqlite

我正在尝试对sqlite3进行全文搜索,但是当包含特殊字符时,我无法搜索任何结果。

表“ messages”具有以下模式

  • 文本
  • searchid

,其中包含一条记录,该记录包含文本$100和searchid dfjkgndfsj

我曾尝试使用此查询创建表

CREATE VIRTUAL TABLE messages_fts
          USING fts5(
              content = 'messages',
              content_rowid = 'searchid',
              tokenize = "unicode61 remove_diacritics 0",
            text,
          );

但是,当我尝试使用

进行搜索时
SELECT *
    FROM messages
    WHERE fromid != 0 and searchid IN 
(SELECT rowid FROM messages_fts WHERE messages_fts MATCH '"$*"' limit 30)

,没有结果返回

此外,如果我尝试使用

进行搜索
SELECT *
    FROM messages
    WHERE fromid != 0 and searchid IN 
(SELECT rowid FROM messages_fts WHERE messages_fts MATCH '"$10*"' limit 30)

,找到记录

如果我尝试使用

进行搜索
SELECT *
    FROM messages
    WHERE fromid != 0 and searchid IN 
(SELECT rowid FROM messages_fts WHERE messages_fts MATCH '"-10*"' limit 30)

,也找到了记录

请帮助指出我可能错过/做错的任何事情,谢谢。

0 个答案:

没有答案