我无法让term suggester
工作。
以下是我的设置。
'name_not_analyzed': {
'type': 'string',
"index": "not_analyzed"
},
'suggest': {
'type': 'completion',
'analyzer': "simple",
'search_analyzer': 'simple',
'payloads': 'yes'
}
这是我的要求。
**术语建议者没有工作..
GET /reviewmeta_index/_suggest
{
"my" : {
"text" : "dd",
"term" : {
"field" : "name_not_analyzed"
}
}
}
**完成提示工作..
GET /reviewmeta_index/_suggest
{
"product_suggest":{
"text":"dd",
"completion": {
"field" : "suggest"
}
}
}
关于如何设置术语建议器工作的文档很少..
答案 0 :(得分:4)
Completion Suggester
用于自动填充功能,因此查询
{
"name_suggest":{
"text":"d",
"completion": {
"field" : "suggest"
}
}
}
会给你类似的东西
"options": [
{
"text": "donald",
"score": 8
},
{
"text": "david",
"score": 7
}
]
虽然term suggester
用于拼写检查并查找类似字词,但您需要查询
{
"my-suggestion": {
"text": "davi",
"term": {
"field": "name_not_analyzed",
"size" : 10
}
}
}
会给你这样的东西
"options": [
{
"text": "dave",
"score": 0.8333333,
"freq": 11
},
{
"text": "david",
"score": 0.6666666,
"freq": 6
}
]
当用户获得零结果时,我使用术语建议器来表示“你是不是意味着”功能。更多options用于调整术语建议。
编辑1:添加了min_word_length选项
由于您的text
只有2个字符,并且max_edits
的默认值为2且默认值min_word_length
为4,因此您无法获得任何结果。
您需要在查询中添加min_word_length
选项
GET /reviewmeta_index/_suggest
{
"my" : {
"text" : "dd",
"term" : {
"field" : "name_not_analyzed",
"min_word_length" : 2
}
}
}
以上查询会为您提供“do”,“did”等建议,但不会给你“DO”,“Did”,因为你有{{1}在球场上。
注意:您无法将index : not_analyzed
增加到超过2的默认值。
ES用于计算编辑距离的algorithm。