我正在使用Lucene和StandardAnalyzer
在我的代码中创建索引,但是,'Yo'和'Ye'(Ё和Е)存在问题。
我希望搜索结果带有'yo',结果也是'ye',反之亦然。我尝试使用自定义过滤器创建与StandartAnalyzer
类似的新Analyzer类,但我没有运气。我也很了解RussianAnalyzer
,但它似乎不适合我,因为它分别对待'哟'和'你'。
这是块,我正在使用这个分析器:
QueryParser queryParser = new QueryParser("myText", new MyAnalyzer());
queryParser.setDefaultOperator(QueryParser.Operator.AND);
在此之后,我会queryParser.parse()
和其他查询构建搜索内容。
问题是:做这项手术的正确方法是什么?我应该使用自定义TokenFilter吗?或者,也许,我自己的CharFilter?
Wikipedia链接到相关角色:https://en.wikipedia.org/wiki/Yo_(Cyrillic) https://en.wikipedia.org/wiki/Ye_(Cyrillic)
答案 0 :(得分:1)
乍一看,我认为你需要创建一个将'yo'映射到'ye'的CharFilter,因为人为错误偶尔会发生这种情况(请参阅上面的'Yo'页面),这样你就更有可能找到你想要什么'哟' - > '你'映射。请记住,这种映射需要在搜索期间以及索引期间进行。