我有一个用于 Elasticsearch 的自动完成功能的工作版本。但是,一个问题是,如果我搜索xbox360。我会得到xbox 360和xbox 1作为可能的建议。
我希望建议仅考虑在建议之前一直包含整个查询的建议。例如,如果我输入xbox 3,则 Elasticsearch 永远不要返回xbox 1,而只能返回xbox 360。
我的查询针对_suggestions端点运行。
我的配置如下。
{
"mappings": {
"query" : {
"properties" : {
"product" : { "type" : "string" },
"name_suggest" : {
"type" : "completion"
}
}
}
最佳答案
我认为您正在描述完成建议。如果是这种情况,可以使用以下示例:
PUT /mymusicsuggest
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 0
},
"mappings": {
"album": {
"properties": {
"name": {
"type": "string"
},
"suggest": {
"type": "completion",
"index_analyzer": "simple",
"search_analyzer": "simple",
"payloads": true
}
}
}
}
}
PUT /mymusicsuggest/album/1
{
"name" : "Tori Amos - Little Earthquakes",
"suggest" : {
"input": [ "earthquakes", "little", "tori", "amos" ],
"output": "Tori Amos - Little Earthquakes",
"payload" : { "songs" : ["11861","11839","11849","11853","11841", "11847","11851","11845","11855","11843","11859","11857"] },
"weight" : 10
}
}
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-suggesters-completion.html
关于autocomplete - Elasticsearch自动完成其余的词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22547399/