0

我正在使用 Lucene 并StandardAnalyzer在我的代码中创建索引,但是,“Yo”和“Ye”(Ё 和 Е)存在问题。

我想要带有“yo”的搜索结果也需要带有“ye”的结果,反之亦然。我尝试StandartAnalyzer使用自定义过滤器创建新的 Analyzer 类,类似于 ,但我没有运气。我也很熟悉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)

4

1 回答 1

1

乍一看,我认为您需要创建一个将“yo”映射到“ye”的 CharFilter,因为偶尔会由于人为错误(参见上面的“Yo”页面)而发生这种情况,因此您更有可能找到您想要的使用 'yo' -> 'ye' 映射。请记住,这种映射需要在搜索和索引期间发生。

于 2018-02-27T22:57:49.067 回答