elasticsearch 如何启用elasticsearch自动完成仅返回匹配词
我需要实现自动完成,但我不确定确切的策略。例如,我有以下产品:elasticsearch 如何启用elasticsearch自动完成仅返回匹配词,elasticsearch,autocomplete,elasticsearch,Autocomplete,我需要实现自动完成,但我不确定确切的策略。例如,我有以下产品: Highsound Smart Phone Watch for Android (Gray) 因此,当用户开始键入:“s”、“sm”、“smar”,就会出现“smart”或“smart watch”,而不是整个短语:安卓Highsound智能手机手表(灰色) 我环顾了一下谷歌、亚马逊等公司是如何做到这一点的,他们不会显示整个匹配记录,而是只显示单词(“智能”)或短语(“智能手表”) 现在,我根据以下链接在elasticsearch
Highsound Smart Phone Watch for Android (Gray)
因此,当用户开始键入:“s”、“sm”、“smar”
,就会出现“smart”
或“smart watch”
,而不是整个短语:安卓Highsound智能手机手表(灰色)
我环顾了一下谷歌、亚马逊等公司是如何做到这一点的,他们不会显示整个匹配记录,而是只显示单词(“智能”)或短语(“智能手表”)
现在,我根据以下链接在elasticsearch中启用automcomplete,但它返回匹配记录的全名
有什么建议吗 这是意料之中的。你把里面的东西拿回来。您可以使用仅返回匹配的单词
{
"query": {
"match_phrase": {
"name": "sm"
}
},
"highlight": {
"fields": {
"name": {
"fragment_size": 1,
"number_of_fragments": 2
}
}
}
}
我使用了\u片段的数量:2,以防有多个以sm开头的单词。您还可以根据需要更改片段大小。在这一点上,你会得到这样的结果,然后你可以使用高亮部分作为前端
"hits": {
"total": 1,
"max_score": 0.6349302,
"hits": [
{
"_index": "my_index",
"_type": "my_type",
"_id": "5",
"_score": 0.6349302,
"_source": {
"name": "Highsound Smart Phone Watch for Android (Gray)"
},
"highlight": {
"name": [
" <em>Smart</em>"
]
}
}
]
}
“点击次数”:{
“总数”:1,
“最高分数”:0.6349302,
“点击次数”:[
{
“_索引”:“我的_索引”,
“_类型”:“我的_类型”,
“_id”:“5”,
“_分数”:0.6349302,
“_来源”:{
“名称”:“适用于Android的Highsound智能手机手表(灰色)”
},
“亮点”:{
“姓名”:[
“聪明”
]
}
}
]
}
解决方案有帮助吗?