2

SolrのPOJOにマップを保存するにはどうすればよいですか?現在、私はこのような構造を持っています

@Field("*_locId")
protected Map<String, Integer> geoLocationToLocationId;

schema.xmlファイル:

<dynamicField name="*_locId" type="int" indexed="false" stored="true" multiValued="false" /> 

経由で追加:

public void addGeoLocationToLocationAutoInMapping(GeoCoordinates geoCoordinates,
        Integer id) {
    if(this.geoLocationToLocationId == null) {
        this.geoLocationToLocationId = new HashMap<String, Integer>();
    }
    this.geoLocationToLocationId.put(geoCoordinates.toString() +
            "_locId", id);
}

取得も同様です。

これは機能しますが、フィールドを大量に取得できるため、このようなJavaマップをSolrに格納するのはちょっと汚いです。JavaマップをSolrに書き込む別の方法はありますか?

それらにインデックスを付けたくはありません。データを保存したいだけです。

4

1 に答える 1

3

一般的には@Geert-Janのアドバイスに従いたいのですが、Solrに必要なすべてのデータを返してもらいたい場合があります。Solrにあなたのような単純なマップ(文字列から整数)を格納するためのより良いハックは、キーと値を2つの別個の複数値フィールドとして格納し、インデックスがそれらに一致することを確認することです。したがって、次のような複数の値を持つフィールドが1つあります。

geo_location:new york, los angeles, chicago

と別のような

location_id:1, 2, 3

また、フィールドの値がnullでないことを確認してlocation_idください。そうでない場合、フィールドのインデックスは一致しません。

于 2013-03-27T00:52:45.963 に答える