我正在使用下面的ICU变换过滤器来进行音译
"transliterate": {
"type": "icu_transform",
"id": "Any-Latin; NFD; [:Nonspacing Mark:] Remove; NFC"
}
目前的问题是此过滤器会替换索引中的原始术语,因此使用术语查询无法使用本机语言进行搜索
{
"terms" : {
"field" : [
"term"
],
"boost" : 1.0
}
}
有没有办法让icu_transform过滤器生成2个术语原始的并且音译一个?
如果不是,我认为最佳解决方案是将复制到另一个字段和分析器,而没有音译过滤器。你能建议smth更有效吗?
我正在使用Elasticsearch 5.6.4
答案 0 :(得分:0)
Multi-fields允许您以不同方式将相同的源值索引到不同的字段。您可以使用标准分析器索引到字段,使用应用ICU变换过滤器的分析器索引到另一个字段。例如,
PUT my_index
{
"mappings": {
"my_type": {
"properties": {
"my_field": {
"type": "text",
"fields": {
"latin": {
"type": "text",
"analyzer": "latin"
}
}
}
}
}
}
}
然后,您可以查询my_field
或my_field.latin
字段。