2

さまざまなフィールドのさまざまなクエリ データと ORed 結果を含むクエリがあります。また、特定のフィールドでのヒットを優先したいと考えています。理想的には、これによりランキングが上がるだけで、他のフィールドの用語の一部を含まない結果が生じることはありません。これにより、特定のフィールドを持つ結果が歪められます。

これは以前はブーストと呼ばれていたと思いますが、ブーストが Lucene Elasticsearch から削除されたため、関数スコアに置き換えられ、クエリに追加する方法がわかりません。

クエリは次のようになります。

POST /index/type/_search
{
    "query": {
        "bool": {
            "should": [{
                "terms": {
                    "field1": ["67", "93", "73", "78", "88", "77"]
                }
            }, {
                "terms": {
                    "field2": ["68", "94", "72", "76", "82", "96", "70", "86", "81", "92", "97", "74", "91", "85"]
                }
            }, {
                "terms": {
                    "category": ["cat2"]
                }
            }]
        }
    }
}

すべての可能なヒットの中で、フィールドからの用語を持つものにランキングを偏らせたいと思いcatagoryます.

4

1 に答える 1

2

フィールド (ドキュメント レベルの_boostブースト) は削除されましたが、フィールド レベルのブーストクエリ ブーストは引き続き正常に機能します。クエリブーストを探しているようです。

したがって、一致をブーストしたい場合field1:

"bool": {
    "should": [{
        "terms": {
            "field1": ["67", "93", "73", "78", "88", "77"],
            "boost": 2.0
        }
    }, {
        "terms": {
            "field2": ["68", "94", "72", "76", "82", "96", "70", "86", "81", "92", "97", "74", "91", "85"]
        }
    }, {
        "terms": {
            "category": ["cat2"]
        }
    }]
}
于 2015-06-17T17:51:37.817 に答える