elasticsearch Elasticsearch,术语建议返回
我不能让术语建议者工作 这是我的设置elasticsearch Elasticsearch,术语建议返回,elasticsearch,autocomplete,elasticsearch,Autocomplete,我不能让术语建议者工作 这是我的设置 'name_not_analyzed': { 'type': 'string', "index": "not_analyzed" }, 'suggest': { 'type': 'completion', 'analyzer': "simple", 'search_analyzer': 'simple', 'payloads': 'yes' } 这是我的要求 **术语建议者不起作用 GET /reviewm
'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"
}
}
}
关于如何设置术语建议器工作的文档很少。
完成建议器
用于自动完成功能,因此类似于查询
{
"name_suggest":{
"text":"d",
"completion": {
"field" : "suggest"
}
}
}
会给你类似的东西
"options": [
{
"text": "donald",
"score": 8
},
{
"text": "david",
"score": 7
}
]
而termsuggester
用于拼写检查和查找相似的术语,因此您需要像
{
"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
}
]
当用户得到零结果时,我使用术语suggester来表示“你们的意思是什么”特性。更多关于术语建议者的调整
编辑1:添加了最小字长选项
由于您的文本
只有2个字符,而且max\u edits
的默认值为2,而min\u word\u length
的默认值为4,因此您不会得到任何结果
您需要在查询中添加min\u word\u length
选项
GET /reviewmeta_index/_suggest
{
"my" : {
"text" : "dd",
"term" : {
"field" : "name_not_analyzed",
"min_word_length" : 2
}
}
}
上述查询将为您提供类似“做”、“做过”的建议,但不会为您提供“做”、“做过”,因为您在字段上有index:not_analysis
注意:默认情况下,不能将max\u edits
增加到2以上
ES用于计算编辑距离。是的,但术语建议不会返回任何内容(空选项)。我需要做一些特殊的设置工作才能使其正常工作吗?您能提供一些您认为应该与您的术语建议查询相匹配的示例文档吗?@eugene我已经编辑了我的答案。如果不行请告诉我谢谢<代码>最小字长是您建议的问题。