0
最简单,最准确的现场比赛本来我的查询字符串“XY”,其中X和Y的话,我的数据库包含字符串:如何有利于在Elasticsearch
"A X Y"
"X Y"
"A B C X Y"
"X Y D E"
我如何确保“XY “总是以最高分回归?我想返回“X Y”,因为它完全匹配(没有额外的单词)。
看过文档后,我尝试使用match_phrase关键字,但我相信这只能帮助我的查询顺序匹配单词。所以match_phrase确保返回“X Y A”,但“X A Y”不是。它不能解决返回最精确匹配的问题。
当前实现(不工作),我在这里试图返回与name =“富巴”的条目作为顶级的结果:
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
}
}
}
]
}
}
}
要搜索“X Y”的术语查询将不匹配“X Y A”或“A X Y” 您可以提高您的'match_phrase'查询结果在结果之上。 – Prashant