处理 yo 和 ye(俄语字符)的 Lucene 分析器
Lucene analyzer to handle yo and ye (Russian characters)
我正在使用 Lucene 和 StandardAnalyzer
在我的代码中创建索引,但是,'Yo' 和 'Ye'(Ё 和 Е)存在问题。
我希望 'yo' 的搜索结果也能产生 'ye' 的结果,反之亦然。我尝试创建新的 Analyzer class,类似于 StandartAnalyzer
,带有自定义过滤器,但我这边运气不好。我也很了解 RussianAnalyzer
,但它似乎对我不起作用,因为它分别对待 'yo' 和 'ye'。
这是块,我正在其中使用此分析器:
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' 映射找到您想要的内容。请记住,此映射需要在搜索和索引期间进行。
我正在使用 Lucene 和 StandardAnalyzer
在我的代码中创建索引,但是,'Yo' 和 'Ye'(Ё 和 Е)存在问题。
我希望 'yo' 的搜索结果也能产生 'ye' 的结果,反之亦然。我尝试创建新的 Analyzer class,类似于 StandartAnalyzer
,带有自定义过滤器,但我这边运气不好。我也很了解 RussianAnalyzer
,但它似乎对我不起作用,因为它分别对待 'yo' 和 'ye'。
这是块,我正在其中使用此分析器:
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' 映射找到您想要的内容。请记住,此映射需要在搜索和索引期间进行。