在ElasticSearch中,我如何根据以下字段顺序查找短语对文档进行排序。
搜索词组:迈阿密 字段:标题,内容,主题
如果在标题,内容和主题中找到,它将在其他文档之前显示该短语仅在内容中找到。
也许有办法说: 如果在标题中找到短语则重量为2 如果在内容中找到短语,则加权1.5 如果在话题中找到短语然后加权1
这将是_score
的总和(权重)我的当前查询看起来像
{
"index": "abc",
"type": "mydocuments",
"body": {
"query": {
"multi_match": {
"query": "miami",
"type": "phrase",
"fields": [
"title",
"content",
"topics",
"destinations"
]
}
}
}
}
答案 0 :(得分:2)
您可以use boosting on fields使用插入符^
表示法将其评分高于其他匹配字段
{
"index": "abc",
"type": "mydocuments",
"body": {
"query": {
"multi_match": {
"query": "miami",
"type": "phrase",
"fields": [
"title^10",
"content^3",
"topics",
"destinations"
]
}
}
}
}
在这里,我将权重为10 title
,权重为3 content
。文档将以递减_score
的顺序返回,因此您需要提高您认为更重要的字段的分数; the values to use for boosting are up to you and may require a little trial and improvement以您的首选顺序退回文件。