gpt4 book ai didi

java - 搜索时忽略变音符号

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:51:58 25 4
gpt4 key购买 nike

我正在使用 Compass/Lucene 来搜索和索引我的数据库。我希望在搜索时忽略变音符号和字符大小写,这样查询“foo”将匹配“Fóo”和“foo”,而查询“fóó”将匹配“fóo”和“fOO”。

根据我所阅读的内容,我似乎需要更改 Compass 在索引和搜索我的上下文时使用的默认分析器。我找到了指定要使用的分析器的位置,但似乎找不到满足我要求的分析器实现。是否已经存在忽略变音符号和字符大小写的分析器,还是我需要自己编写?

最佳答案

看看 org.apache.lucene.analysis.ASCIIFoldingFilter 看看它是否符合您的要求。如果没有,我会使用它的来源作为编写您自己的来源的起点。

必须使用相同的分析器配置进行索引和查询是正确的,原因很明显,如果您从索引中删除了所有变音符号,则需要从任何查询中删除它们还有。

需要注意的一件事是确保在索引/查询过程中的某处规范化任何 unicode。具体见:http://unicode.org/reports/tr15/ , http://unicode.org/faq/normalization.html , 和 http://docs.oracle.com/javase/6/docs/api/java/text/Normalizer.html .

编辑:正如下面评论中提到的,作为过滤器,您不能直接将 ASCIIFoldingFilter 用作分析器,但是这里有关于将其包含在分析器中的直接说明:stackoverflow.com/a/3834244/390153

编辑:正如@jspboix 在下面的评论中提到的,您还需要链接 LowerCaseFilter 来处理字符大小写。

关于java - 搜索时忽略变音符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11182020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com