我有一个使用以下字词的请求:

{
"query": {
  "bool": {
    "should": [
      {
        "terms": {
          "subjects.id": [
            1,
            2,
            3
          ], boost: 3
        }
      },
      {
        "terms": {
          "qualification_type.id": [
            3,
            5
          ], boost: 2
        }
      }
    ]
  }
}

我工作得很好,但是比起只匹配一个主题的文档,匹配三个主题的文档的得分更高。

我的问题是:如果在主题上有一个或多个匹配项,是否有办法强制分数相同?

提前致谢 !

最佳答案

您可以将字词查询转换为过滤器,然后将其包装到constant score query中。例如:

{
    "query": {
        "bool": {
            "should": [{
                "constant_score": {
                    "filter": {
                        "terms": {
                            "subjects.id": [1, 2, 3]
                        }
                    },
                    boost: 3
                }
            }, {
                "constant_score": {
                    "filter": {
                        "terms": {
                            "qualification_type.id": [3, 5]
                        }
                    },
                    boost: 2
                }
            }]
        }
    }
}

关于elasticsearch - Elasticsearch 查询字词和评分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15110863/

10-11 09:26