如何在 Elasticsearch charFilter 中映射同一个字符两次

How to map same character two times in Elasticsearch charFilter

我在我的索引中使用希腊字符,我正在尝试使用希腊字符进行搜索 tones.For 例如,如果我使用“παλια”进行搜索,我想返回“παλια”和“παλιì”。我正在尝试为字符 α 创建双重映射,但我得到一个错误 "match \"α\" was already added"。这是我的代码:

 var response = client1.CreateIndex("thetrialindex",
            th =>
                th.Settings(
                    s =>
                        s.Analysis(
                            a =>
                                a.Analyzers(
                                        an =>
                                            an.Custom("my_analyzer",
                                                cu => cu.Tokenizer("keyword").CharFilters("my_char_filter"))
                                               )
                                    .CharFilters(c1=>c1.Mapping("my_char_filter", ma1=>ma1.Mappings("α => ά","α => α")))
                                                                                    )));

最好的方法是将 IcuTransform 与您需要的语言一起使用。 例如,要将拉丁字符翻译成希腊语,您可以使用类似的东西:

.IcuTransform("latingreek", lg => lg.Id("Latin-Greek; NFD; [:Nonspacing 
Mark:] Remove; NFC").Direction(IcuTransformDirection.Forward))

并将其添加到您的索引和搜索分析器中。