代码之家  ›  专栏  ›  技术社区  ›  Senso Hakai

Lucene analyzer处理yo和ye(俄语字符)

  •  0
  • Senso Hakai  · 技术社区  · 7 年前

    我在用Lucene和 StandardAnalyzer 然而,在我的代码中创建索引时,“Yo”和“Ye”(and)有一个问题。

    我希望搜索结果带有“yo”,也希望搜索结果带有“ye”,反之亦然。我尝试创建新的Analyzer类,类似于 StandartAnalyzer ,带有自定义过滤器,但我这边运气不好。我也很了解 RussianAnalyzer ,但它似乎对我不起作用,因为它分别对待“yo”和“ye”。

    这是我使用此分析器的块:

    QueryParser queryParser = new QueryParser("myText", new MyAnalyzer());
    queryParser.setDefaultOperator(QueryParser.Operator.AND);
    

    在这之后我会 queryParser.parse() 和其他用于搜索的查询构建内容。

    问题是:做这个手术的正确方法是什么?我应该使用自定义令牌过滤器吗?或者,也许是我自己的CharFilter?

    维基百科链接到问题人物: https://en.wikipedia.org/wiki/Yo_(Cyrillic) https://en.wikipedia.org/wiki/Ye_(Cyrillic)

    1 回复  |  直到 5 年前
        1
  •  1
  •   Mark Leighton Fisher    7 年前

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