您好我正在尝试搜索不同字段中的值。我正在使用multi_match和cross_fields类型。 这是查询
"query": {
"filtered": {
"query": {
"bool": {
"must": [
{
"multi_match": {
"query": "red cross",
"type": "cross_fields",
"fields": [
"name^20",
"keywords^12",
"description^1"
]
}
}
]
}
}
} }
我得到的结果是上面的查询
"results": [
{
"name": "CrossPurpose",
.....
} ,
{
"name": "Community Center",
"keywords": "American Red Cross,Red Cross,Center,Blood",
. . .
},
{
"name": "Some Group",
"description":".... red cross ..."
},
.......
....
..
{
"name" : "Red cross" ,
.....
}
]
我想改进搜索结果。
我希望看到名字记录为#34;红叉"在第一个位置。 首先它应该匹配整个单词" red cross"那么只有它应该匹配" red" ,"交叉"。
我希望首选名称字段比关键字和描述更多。
请帮我改进查询。 提前谢谢。
答案 0 :(得分:0)
您需要使用type = best_fields
所以你的查询将是
{
"query": {
"multi_match" : {
"query": "red cross",
"type": "best_fields",
"fields": [ "name", "keywords", "description" ],
"tie_breaker": 0.3
}
}
}