ElasticSearch基于找到该短语的字段对文档进行排序

时间:2015-04-01 23:05:21

标签: elasticsearch

在ElasticSearch中,我如何根据以下字段顺序查找短语对文档进行排序。

搜索词组:迈阿密 字段:标题,内容,主题

如果在标题,内容和主题中找到,它将在其他文档之前显示该短语仅在内容中找到。

也许有办法说: 如果在标题中找到短语则重量为2 如果在内容中找到短语,则加权1.5 如果在话题中找到短语然后加权1

这将是_score

的总和(权重)

我的当前查询看起来像

{
  "index": "abc",
  "type": "mydocuments",
  "body": {
    "query": {
      "multi_match": {
        "query": "miami",
        "type": "phrase",
        "fields": [
          "title",
          "content",
          "topics",
          "destinations"
        ]
      }
    }
  }
}

1 个答案:

答案 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以您的首选顺序退回文件。