3

私はSolrにかなり慣れていません.JSONを介してすべて定義された、値ごとにブースト値が定義された複数値フィールドを追加しようとしています。言い換えれば、これが機能することを望みます:

[{ "id": "ID1000",
  "tag": [ 
    { "boost": 1, "value": "A test value" }, 
    { "boost": 2, "value": "A boosted value" } ]
}]

XML(複数)でそれを行う方法は知っています<field name = 'tag' boost = '...'>が、上記のJSONコードは機能しません。サーバーは「JSONフィールド値の解析中にエラーが発生しました。予期しないOBJECT_START」と表示します。Solr に制限/バグはありますか?

PS: 元々欠けていた ']' を修正しましたが、それは問題ではありません。

編集:ペイロード( http://wiki.apache.org/solr/Payloads )を使用する必要があるようですが、Solrで動作させることはできませんでした(これに従ってください: http://sujitpal.blogspot. co.uk/2011/01/payloads-with-solr.html )。質問を開いたままにして、誰かがさらに助けてくれるかどうかを確認します。

4

5 に答える 5

4

Solr Relevancy FAQ-QueryElevationComponentセクションから次の文が見つかりました

multiValuedフィールドの値に対するインデックス時間のブーストは、そのフィールドのすべての値に適用されます。

多値フィールドの各値に個別のブーストを追加してもうまくいくとは思いません。Xmlで許可されることはわかっていますが、フィールドに適用された最後の値からのブースト値のみが適用される可能性があると思います。

それで、それに基づいて、Jsonを次のように変更し、それが機能するかどうかを確認します。

[
    {
        "id": "ID1000",
        "tag": {
           "boost": 2, 
           "value": [ "A test value", "A boosted value"]
         }
    }
]
于 2013-02-06T12:48:57.307 に答える
0

JSON が無効のようで、終了が欠落しています]

[
    {
        "id": "ID1000",
        "tag": [
            {
                "boost": 1,
                "value": "A test value"
            },
            {
                "boost": 2,
                "value": "A boosted value"
            }
        ]
    }
]
于 2013-02-06T03:44:10.570 に答える
0

エッジケースに遭遇しました。単一の値にブーストを設定したり、値の配列を設定したりできます。しかし、別のものではありません(Solr 4.1ソースコードの私の読書から)

それは、機能強化リクエストとして作成するものかもしれません。

その JSON を手動で生成している場合は、次を試すことができます。

"tag": { "boost": 1, "value": "A test value" }, 
"tag": { "boost": 2, "value": "A boosted value" }

その時、Solsは価値観を融合させると信じています。ただし、フレームワークを介して生成している場合は、複数のオブジェクト プロパティ名 (ここではタグ) を禁止またはオーバーライドする可能性が高くなります。

于 2013-02-06T13:01:48.737 に答える
0

エラーはブーストとは関係ありません。非常に単純なjsonドキュメントで同じエラーが発生します。それを解決する運はありません。コレクションを解析しようとしたときの Solr エラー: JSON フィールド値の解析エラーを参照してください。予期しない OBJECT_START

于 2013-06-04T02:56:10.403 に答える