2

「名前」と「説明」が入力された索引があります。インデックスに対してブール クエリを実行しています。用語が名前フィールドと説明フィールドの両方に存在する場合があります。この場合、名前と説明の両方に検索用語が含まれるドキュメントは、名前または説明に検索用語が含まれるドキュメントよりもスコアが高くなります。

私が望むのは、それらを均等に採点することです。そのため、名前または説明のいずれかがその用語を含むドキュメントは、名前と説明の両方に検索語が存在するドキュメントと同じスコアになります。

出来ますか?

次に例を示します。

{
    "name":     "xyz",
    "description":  "abc xyz"
},
{
    "name":     "abc",
    "description":  "xyz pqr"
},
{
    "name":     "xyz",
    "description":  "abc pqr"
}

ユーザーが「xyz」という用語を検索する場合、上記の 3 つのドキュメントすべてに同じスコアが必要です。すべてのドキュメントには、名前、説明、または両方のフィールドに「xyz」という用語が含まれているためです。

4

2 に答える 2

1

これには、フィルター処理されたクエリを使用できます。フィルターはスコアリングされません。用語を検索するには、次のクエリを参照してください"xyz"

POST <index name>/<type>/_search
{
    "filtered": {
        "query": {
            "match_all": {}
        },
        "filter": {
            "bool": {
                "should": [
                    {
                        "term": {
                            "name": "xyz"
                        }
                    },
                    {
                        "term": {
                            "description": "xyz"
                        }
                    }
                ]
            }
        }
    }
}
于 2015-01-27T10:21:10.680 に答える