我有一个名为title的字段,其值如下
因此,如果用户搜索
apple iphone 6
然后它应该按顺序排列
2 > 1 > 3 > 4 > 5
。
如果用户搜索
apple iphone 6s
它应该按顺序排列
1 > 3 > 2 > 4 > 5.
如何使用elasticsearch做到这一点。
我用过multi_search和所有。但是没有帮助。
顺序应该是完全匹配,然后是前缀。然后是词组,然后是包含所有3个词的字段,然后是包含2个词的字段,然后是包含1个词的字段,依此类推。
谢谢您的帮助。
最佳答案
您可以尝试:
{
"query": {
"bool":{
"should":[
{"match_phrase":{"title":"apple iphone 6s"}},
{"match_phrase_prefix":{"title":"apple iphone 6s"}}
]
}
}
}
如果要包含“iphone”和“apple”的所有数据,则应为搜索中的每个单词添加一个
match_phrase_prefix
。
关于search - 如何提高Elasticsearch中的搜索相关性顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37360414/