我正在使用 Whoosh 来实现一个小型的本地搜索引擎。文件包含法语和英语。

您可能知道,法语中经常使用重音符号 (à è é ...)。所以我不得不按照 Whoosh Documentation 的建议使用重音折叠来处理它们:

accent_analyzer = RegexAnalyzer(r'\w+') | LowercaseFilter() \
                  | StopFilter() | CharsetFilter(accent_map)

schema = Schema(path=ID(stored=True), content=TEXT(analyzer=accent_analyzer))

索引文档工作正常(没有错误)。

但是当涉及到搜索时,对于包含重音的单词,我没有得到任何结果。

例如

让文档 Dcontent = u'unité logique' :
  • 使用 logique 搜索命中文档。
  • 使用 unité 搜索没有。
  • 使用 unite 搜索没有。

  • 所以我认为索引编写者忽略了带重音的单词,这就是为什么无论查询是否包含重音,它都不会显示针对这些单词的查询结果。

    只是提醒一下,我想要实现的是使用 Dunité 这两个词点击文档 unite

    最佳答案

    whoosh 要求所有字符串都为 unicode

    Does whoosh require all strings to be unicode?

    对于 unicode 中的重音,请参阅 http://unicodelookup.com/

    ( https://ss64.com/unicode-accents.html )

    关于python - Whoosh 不搜索带有重音的单词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42769299/

    10-13 04:20