SQLite:在一个单词中使用FTS匹配可以忽略哪个字符

时间:2013-03-17 06:37:10

标签: sqlite full-text-search match

我需要找到任何特殊字符。如果我把它放在一个单词的中间,SQLite FTS匹配可以忽略它,好像它不存在,例如:

Text Body: book's

如果我的匹配字符串是'books',我需要得到“book's”的结果.. 使用porter或简单的标记器没问题。

我尝试了很多角色,比如:书!s,书籍,书籍,书籍,书籍,书籍......,但是当通过匹配搜索“书籍”时,没有任何结果返回。

我不明白,为什么?

我正在使用:无内容FTS4表和外部内容FTS4表,我的文本正文在每个单词中都有很多字符,在搜索时应该更改为忽略它。

我无法更改匹配查询,因为我不知道单词中的特殊字符在哪里。另外,我需要保留原始单词长度等于FTS索引单词的长度以使用匹配信息或片段();因此,我无法从文本正文中删除这些字符。

1 个答案:

答案 0 :(得分:1)

默认的标记生成器不会忽略标点符号,而是将它们视为单词分隔符。

因此,文字正文或匹配字符串book's最终会以两个字books结尾。 这些内容永远不会匹配books等单个作品。

要忽略'等字符,您必须install your own custom tokenizer