java - Lucene 分析器处理 yo 和 ye(俄语字符)

标签 java lucene query-parser

我正在使用 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/

相关文章:

java - JList 未显示在 JScrollPane 上

java - 如何在 VoIP 来电时从我的应用程序加载 Activity ?

java - 编辑将 JTable 写入 Excel

java - hibernate 搜索错误

java - Solr 不会覆盖 - 重复的 uniqueKey 条目

c# - Lucene.Net(3.0.3 或 4.8.0)QueryParser 可以搜索数字吗?

java - 将对象写入 Gemfire 缓存中的键

java - hibernate 搜索中分析器的编译时错误

java - Lucene 解析查询 : Cannot parse '' : Encountered "<EOF>" at line 1, 第 0 列时出错

sql - 解析查询是什么意思?