假设我的查询是字符串“X Y”,其中 X 和 Y 是单词,并且我的数据库包含字符串:
"A X Y"
"X Y"
"A B C X Y"
"X Y D E"
如何确保始终以最高分返回“X Y”?我想返回“X Y”,因为它完全匹配(没有多余的单词)。
查看文档后,我尝试使用 match_phrase 关键字,但我相信这只会帮助按顺序匹配我的查询中的单词。因此 match_phrase 确保返回“XY A”但不返回“XA Y”。它不能解决返回最精确匹配的问题。
当前实现(不起作用),在这里我试图返回带有 name="Foo bar" 的条目作为顶部结果:
GET _search
{
"query" : {
"bool" : {
"must": [
{
"query_string": {
"query": "Foo bar"
}
}
],
"filter": [],
"should": [
{
"match": {
"name": {
"query":"Foo bar",
"boost": 2
}
}
},
{
"match_phrase": {
"name": {
"query": "Foo bar",
"boost": 5
}
}
}
]
}
}
}