0

私は solr を初めて使用し、Solr でマップをシリアライズ/デシリアライズしようとすると問題に直面しています。

次のように、Java アプリケーションで Spring Data Solr を使用します。

@Field("mapped_*")
private Map<String, String> values;

次のように、Solr でマップを平坦化し、シリアル化します。

"key1" : "value1"
"key2" : "value2"
...

しかし、検索を実行すると、返されたオブジェクトのこのフィールドは常に NULL に設定されています。この特定のフィールドではデシリアライゼーションが機能しません。キー 1、キー 2... がマップの一部として認識されないようです。

逆シリアル化を機能させる方法を知っている人はいますか? カスタム コンバーターを実装する必要がありますか?

4

1 に答える 1

3

現時点では、Spring Data Solr はマップに含まれる値に指定された を自動的にプレフィックスとして付けることはしませんが、フィールド名として@Field#valueのみ使用します。Map#key改善 ( DATASOLR-202 ) が開かれています。

現時点では、key1が, key2,.. であるためには、値を正しく読み取るためにフィールド名が である必要があります。key*

@Field("key*")
private Map<String, String> values;
于 2015-03-30T06:52:59.510 に答える