ElasticSEarch的得分优化

时间:2015-06-29 16:59:55

标签: search elasticsearch full-text-search

我们有一个存储在ElasticSearch中的产品目录。 每个文档都是这样的:

{
   'family': 'products family'
   'category': 'products category' 
   'name': 'product name'
   'description': 'product description'
}

我们正在尝试构建一个查询,以获得搜索字词的模糊匹配,并按以下字段顺序对结果进行评分:

  • 家族
  • 类别
  • 名称
  • description

有办法吗?

1 个答案:

答案 0 :(得分:1)

一种简单的方法是使用多匹配查询为每个字段提供适当的提升。

{
    "query": {
        "multi_match": {
           "query": "produce",
           "fields": ["family^4","category^3","name^2","description"],
           "fuzziness" :  "AUTO",
           "rewrite" : "constant_score_auto"
        }
    }
}

在同一领域匹配的所有文档都会获得相同的分数。 您可以通过调整rewrite参数来更改此行为 Article进一步了解了这一点。