我需要找到任何特殊字符。如果我把它放在一个单词的中间,SQLite FTS匹配可以忽略它,好像它不存在,例如:
Text Body: book's
如果我的匹配字符串是'books',我需要得到“book's”的结果.. 使用porter或简单的标记器没问题。
我尝试了很多角色,比如:书!s,书籍,书籍,书籍,书籍,书籍......,但是当通过匹配搜索“书籍”时,没有任何结果返回。
我不明白,为什么?
我正在使用:无内容FTS4表和外部内容FTS4表,我的文本正文在每个单词中都有很多字符,在搜索时应该更改为忽略它。
我无法更改匹配查询,因为我不知道单词中的特殊字符在哪里。另外,我需要保留原始单词长度等于FTS索引单词的长度以使用匹配信息或片段();因此,我无法从文本正文中删除这些字符。
答案 0 :(得分:1)
默认的标记生成器不会忽略标点符号,而是将它们视为单词分隔符。
因此,文字正文或匹配字符串book's
最终会以两个字book
和s
结尾。
这些内容永远不会匹配books
等单个作品。
要忽略'
等字符,您必须install your own custom tokenizer。