是否有Lucene Analyzer可以忽略“alpha”和“alpha”之间的差异?

e4eetjau  于 2023-06-22  发布在  Lucene
关注(0)|答案(1)|浏览(235)

理想情况下,我喜欢的东西,否则行为像一个StandardAnalyzers,但对待所有希腊符号等同于他们的英语语音拼写(“beta”==“β”,“omega”==“ω”)。我看了重症监护室的分析仪,但它并没有走那么远。如果它不存在,您是否有关于设计这种分析器的最有效方法的建议?

svgewumm

svgewumm1#

在研究@瓦尔建议后。我把这些拼凑起来。我不知道这是不是很正确,但保存在这里,以防有人发现作为一个有用的起点。

private static Analyzer GetGreekSymbolAgnosticAnalyzer()
    {
        NormalizeCharMap.Builder builder = new NormalizeCharMap.Builder();
        builder.Add("α", "alpha");
        builder.Add("β", "beta");
        builder.Add("ω", "omega");

        NormalizeCharMap norm = builder.Build();
        Analyzer analyzer = Analyzer.NewAnonymous(createComponents: (fieldName, reader) =>
        {
            Tokenizer tokenizer = new StandardTokenizer(LuceneVersion.LUCENE_48, reader);
            return new TokenStreamComponents(tokenizer, new StandardFilter(LuceneVersion.LUCENE_48, tokenizer));
        }, initReader: (fieldName, reader) => new MappingCharFilter(norm, reader));

        return analyzer;
    }

相关问题