如果有人还在寻找答案,
完成建议器适用于前缀匹配。因此,在输入中,您可以提供短语可能的后缀。即使您从中间开始,这也将允许您进行前缀搜索,即子字符串搜索。
例如:
{
"text" : "Courtyard by Marriot Munich City",
"text_suggest" : {
"input": [
"Courtyard by Marriot Munich City",
"by Marriot Munich City",
"Marriot Munich City",
"Munich City",
"City"
],
"output" : "Courtyard by Marriot Munich City",
"weight" : 11,
"payload": { "id" : 314159 }
}
}
如您所见,无论您从“慕尼黑市万怡酒店”开始,您都会得到结果。 (例外可能是“by”,因为在大多数情况下它将作为停用词被丢弃)。
对于一般搜索字符串来说,最多 4-5 个步骤就足够了。此外,如果您使用过滤器处理停用词,则无需担心输入中的停用词。
样品指标分析仪
{
"settings" : {
"analysis" : {
"filter" : {
"suggester_stop" : {
"type" : "stop",
"stopwords" : "_english_",
"remove_trailing" : false,
"ignore_case" : true
},
"suggester_stemmer" : {
"type" : "stemmer",
"name" : "light_english"
}
},
"analyzer" : {
"suggester_analyzer" : {
"type" : "custom",
"tokenizer" : "standard",
"char_filter" : ["html_strip"],
"filter" : [
"standard",
"lowercase",
"suggester_stop",
"suggester_stemmer"
]
}
}
}
}
}
这将解决您在评论之一中提到的问题:
然后,如果我建议“apple ip”,它不会给出结果。
iPhone 6 怎么样?
{
"text_suggest" : {
"input": [
"apple iphone 6",
"iphone 6"
],
"output" : "apple iphone 6",
"weight" : 11
}
}
您将获得“apple ip”、“iphone 6”等的搜索结果。但是,您不会获得“apple 6”的结果,无论如何,这对于人们搜索来说并不常见。