完成建议外语口音希腊语



我正在尝试将完成建议器与希腊语一起使用。不幸的是,我对ά这样的口音有问题。我已经尝试了几种方法。

一种是简单地在映射中设置希腊语分析器,另一种是带有腹水折叠的小写分析器。没有成功,使用希腊分析仪,我什至没有得到带有口音的结果。

以下是我所做的,如果有人能在这里帮助我,那就太好了。

映射

PUT t1
{
"mappings": {
"profession" : {
"properties" : {
"text" : {
"type" : "keyword"
},
"suggest" : {
"type" : "completion",
"analyzer": "greek"
}
}
}
}
}

虚拟

POST t1/profession/?refresh
{
"suggest" : {
"input": [ "Μάγειρας"]
}
,"text": "Μάγειρας"
}

查询

GET t1/profession/_search
{ "suggest": 
{ "profession" : 
{ "prefix" : "Μα"
, "completion" : 
{ "field" : "suggest"}
}}}

我找到了一种使用自定义分析器或通过 es 插件的方法,我强烈建议在涉及非拉丁文本时做到这一点。

选项 1

PUT t1
{ "settings": 
{ "analysis": 
{ "filter": 
{ "greek_lowercase": 
{ "type":       "lowercase"
, "language":   "greek"
}  
}
, "analyzer": 
{ "autocomplete": 
{ "tokenizer": "lowercase"
, "filter": 
[ "greek_lowercase" ]
}
}
}}
, "mappings": {
"profession" : {
"properties" : {
"text" : {
"type" : "keyword"
},
"suggest" : {
"type" : "completion",
"analyzer": "autocomplete"
}
}}}
}

选项 2 ICU 插件

安装 ES 插件: https://www.elastic.co/guide/en/elasticsearch/plugins/current/analysis-icu.html

{ "settings": {
"index": {
"analysis": {
"normalizer": {
"latin": {
"filter": [
"custom_latin_transform"
]
}
},
"analyzer": {
"latin": {
"tokenizer": "keyword",
"filter": [
"custom_latin_transform"
]
}
},
"filter": {
"noDelimiter": {"type": "word_delimiter"},
"custom_latin_transform": {
"type": "icu_transform",
"id": "Greek-Latin/UNGEGN; Lower(); NFD; [:Nonspacing Mark:] Remove; NFC"
}
}
}
}
}
, "mappings":
{ "doc" : {
"properties" : {
"verbose" : {
"type" : "keyword"
},
"name" : {
"type" : "keyword"
},
"slugHash":{
"type" : "keyword",
"normalizer": "latin"
},
"level": { "type": "keyword" },
"hirarchy": {
"type" : "keyword"
},
"geopoint": { "type": "geo_point"  },
"suggest" :
{ "type" : "completion"
, "analyzer": "latin"
, "contexts":
[ { "name": "level"
, "type": "category"
, "path": "level"
}
]
}}
}
}}

最新更新