6

現在の状況

Elasticsearch のパーコレート機能を使用しています。それはすべてうまく機能します-新しいドキュメントに一致する percolate-id を取得し、基本的に逆検索を構築できます。今まですべて素晴らしい。

問題

ここで問題が発生します。指定されたドキュメントがパーコレーターのクエリとどの程度一致するかを表すスコアが必要です (正確には、通常のクエリで得られるスコアです)。これを行うために を追加しましたtrack_scoresが、うまくいきませんでした。

のドキュメントでこれを見つけましたtrack_scores

...スコアはクエリに基づいており、クエリがパーコレート クエリのメタデータとどのように一致したかを表し、パーコレートされるドキュメントがクエリとどのように一致したかを表します...

私が欲しい/必要なものは可能ですか?

問題を示す例

問題を示すサンプルを次に示します ( elasticsearch.orgから取得)。1.0ここで、入力ドキュメントに関係なく、percolate-response で返されるスコアは常にです。

//Index the percolator
curl -XPUT 'localhost:9200/my-index/.percolator/1' -d '{
    "query" : {
        "match" : {
            "message" : "bonsai tree"
        }
    }
}'

最初のドキュメントをパーコレートします:

curl -XGET 'localhost:9200/my-index/message/_percolate' -d '{
    "doc" : {
        "message" : "A new bonsai tree in the office"
    },
    "track_scores" : "true"
}'


//...returns
{"took": 1, "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
}, "total": 1, "matches": [
    {
        "_index": "my-index",
        "_id": "1",
        "_score": 1.0 <-- Score
    }
]}

2 番目の (異なる) ものをパーコレートします。

//Percolate a second one
curl -XGET 'localhost:9200/my-index/message/_percolate' -d '{
    "doc" : {
        "message" : "A new bonsai tree in the office next to another bonsai tree is cool!"
    },
     "track_scores" : "true"
}'


//...returns
{"took": 3, "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
}, "total": 1, "matches": [
    {
        "_index": "my-index",
        "_id": "1",
        "_score": 1.0 <-- SAME Score, but different document (other score needed here!)
    }
]}

何が必要だろう

0.8最初のドキュメントと2 番目のドキュメントのようなスコアが必要です0.9。しかし、彼らがここで行ったように同じスコアを持つことはできません。どうすれば私が望むものを達成できますか?

アイデアと助けをありがとう。

4

2 に答える 2

-1

ドキュメントは、検索スペースを制限するクエリを定義していません。は_score、パーコレートするクエリではなく、このクエリで計算されます。

于 2014-09-15T13:55:45.670 に答える