eug*_*ene 2 autocomplete elasticsearch
我不能term suggester工作。
这是我的设置。
'name_not_analyzed': {
'type': 'string',
"index": "not_analyzed"
},
'suggest': {
'type': 'completion',
'analyzer': "simple",
'search_analyzer': 'simple',
'payloads': 'yes'
}
Run Code Online (Sandbox Code Playgroud)
这是我的要求。
** 术语建议器不起作用..
GET /reviewmeta_index/_suggest
{
"my" : {
"text" : "dd",
"term" : {
"field" : "name_not_analyzed"
}
}
}
Run Code Online (Sandbox Code Playgroud)
** 完成建议工作..
GET /reviewmeta_index/_suggest
{
"product_suggest":{
"text":"dd",
"completion": {
"field" : "suggest"
}
}
}
Run Code Online (Sandbox Code Playgroud)
关于我应该如何设置术语建议器工作的文档很少。
Completion Suggester 用于自动完成功能,因此查询如下
{
"name_suggest":{
"text":"d",
"completion": {
"field" : "suggest"
}
}
}
Run Code Online (Sandbox Code Playgroud)
会给你类似的东西
"options": [
{
"text": "donald",
"score": 8
},
{
"text": "david",
"score": 7
}
]
Run Code Online (Sandbox Code Playgroud)
whileterm suggester用于拼写检查和查找相似的术语,因此您需要查询
{
"my-suggestion": {
"text": "davi",
"term": {
"field": "name_not_analyzed",
"size" : 10
}
}
}
Run Code Online (Sandbox Code Playgroud)
这会给你这样的东西
"options": [
{
"text": "dave",
"score": 0.8333333,
"freq": 11
},
{
"text": "david",
"score": 0.6666666,
"freq": 6
}
]
Run Code Online (Sandbox Code Playgroud)
当用户获得零结果时,我使用术语建议器来表示“您是不是要说”功能。用于调整术语建议器的更多选项。
编辑 1:添加 min_word_length 选项
由于您text只有 2 个字符,并且因为默认值为max_edits2,默认值为min_word_length4,所以您没有得到任何结果。
您需要min_word_length在查询中添加选项
GET /reviewmeta_index/_suggest
{
"my" : {
"text" : "dd",
"term" : {
"field" : "name_not_analyzed",
"min_word_length" : 2
}
}
}
Run Code Online (Sandbox Code Playgroud)
上面的查询会给你诸如“do”、“did”之类的建议,但不会像你在现场那样给你“DO”、“Did”index : not_analyzed。
注意:您不能增加到max_edits超过 2,这是默认值。
ES 用于计算编辑距离的算法。
| 归档时间: |
|
| 查看次数: |
6019 次 |
| 最近记录: |