7

次のような用語を使用してリクエストがあります:

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

私はかなりうまく機能しますが、1つの主題だけに一致するドキュメントよりも、3つの主題に一致するドキュメントの方がスコアが高いと考えています。

私の質問は:主題に1つまたは複数の一致がある場合にスコアを同じにする方法はありますか?

前もって感謝します !

4

1 に答える 1

10

用語クエリをフィルターに変換し、それらを一定スコアクエリにラップすることができます。例えば:

{
    "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
                }
            }]
        }
    }
}
于 2013-02-27T12:31:27.383 に答える