如何在 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))
并将其添加到您的索引和搜索分析器中。
我在我的索引中使用希腊字符,我正在尝试使用希腊字符进行搜索 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))
并将其添加到您的索引和搜索分析器中。