我正在使用 Lucene 和 StandardAnalyzer
在代码中创建索引,但是“Yo”和“Ye”(Ё 和 Е)存在问题。
我希望包含“yo”的搜索结果也能产生包含“ye”的结果,反之亦然。我尝试创建新的分析器类,类似于 StandartAnalyzer
,带有自定义过滤器,但我这边没有运气。我也很了解 RussianAnalyzer
,但它似乎对我不起作用,因为它分别对待“yo”和“ye”。
这是我使用此分析器的 block :
QueryParser queryParser = new QueryParser("myText", new MyAnalyzer());
queryParser.setDefaultOperator(QueryParser.Operator.AND);
在此之后,我执行 queryParser.parse()
和其他用于搜索的查询构建内容。
问题是:执行此操作的正确方法是什么?我应该使用自定义 TokenFilter 吗?或者,也许,我自己的 CharFilter?
维基百科链接到相关角色:https://en.wikipedia.org/wiki/Yo_(Cyrillic) https://en.wikipedia.org/wiki/Ye_(Cyrillic)
最佳答案
乍一看,我认为您需要创建一个将“yo”映射到“ye”的 CharFilter,因为偶尔会由于人为错误而发生这种情况(请参阅上面的“Yo”页面),因此您更有可能找到你想要什么“yo”->“ye”映射。请记住,此映射需要在搜索和索引期间发生。
关于java - Lucene 分析器处理 yo 和 ye(俄语字符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48889407/