【发布时间】:2017-11-03 03:31:34
【问题描述】:
假设我的查询是字符串“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 确保返回“X Y A”但不返回“X A 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
}
}
}
]
}
}
}
【问题讨论】:
标签: elasticsearch mongoosastic