我运行以下查询:
GET /thing/_search/?
{
"query": {
"multi_match" : {
"query": "castle pontivy",
"type": "most_fields",
"fields": [ "title", "loc" ]
}
}
}
它工作并返回thing
的结果,其中title
和loc
包含castle
和/或pontivy
的相关顺序。很好。
现在,我想继续这样查询,但是我也希望结果更喜欢title
上的完全匹配。这意味着,如果一个项目的标题与castle pontivy
完全匹配,则必须将其作为第一个元素返回(然后将其他结果照常处理)。
有没有办法做到这一点?
答案 0 :(得分:1)
您可以进行phrase
匹配并将其boost
设置为5,因此无论默认分数是多少,它都将加上+5。如果您想获得更多分数,请查看function score query(我建议您这样做)
第二个multi_match将使用most_fields
匹配其余文档。
{
"query":{
"bool":{
"should":[
{
"multi_match":{
"query":"castle pontivy",
"type":"phrase",
"fields":[
"title",
"loc"
],
"boost":5
}
},
{
"multi_match":{
"query":"castle pontivy",
"type":"most_fields",
"fields":[
"title",
"loc"
]
}
}
]
}
}
}