問題

私は異なるタイプの動的フィールドを持つsolrスキーマを持っています。例えばschema.xmlには次のものがあります:

 <dynamicField name="*_s" type="string" indexed="true"  stored="true"/>
<dynamicField name="*_i" type="int"    indexed="true"  stored="true"/>
<dynamicField name="*_l" type="long"   indexed="true"  stored="true"/>
<dynamicField name="*_f" type="float"  indexed="true"  stored="true"/>
<dynamicField name="*_d" type="double" indexed="true"  stored="true"/>
 

そして、私はSolrJ注釈付きPOJOを使ってこれらのフィールドにアクセスしたいと思います。私はこのようにPOJOの各データ型に対して異なるMap参照を持つことができることを知っています:

 ...
@Field("*_s")
public Map<String, String> strings;

@Field("*_i")
public Map<String, Integer> integers;
...
 

しかし、すべての動的フィールドを同じマップに格納することは可能ですか?私は次のようなことを考えていた:

 ...
@Field("*_s")
@Field("*_i")
public Map<String, Object> dynamicFields;
...
 

SolrJ、POJO、および動的フィールドについて私が見つけることができる唯一のドキュメントは、古い機能要求です。 https://issues.apache.org/jira/browse/SOLR-1129

  ベストアンサー

@Fieldアノテーションの 'pattern'値の一致は、schema.xmlにあるものと一致する必要はありません。だから、私は私のdocクラスでマップを定義しました:

 @Field("*DF")
private Map<String, Object> dynamicFields;
 

schema.xmlでは、dynamicFieldsには 'DF'によってpostfixedパターンがあります。

 <dynamicField name="*_sDF" type="string" indexed="true" stored="true"/>
<dynamicField name="*_siDF" type="sint" indexed="true" stored="true"/>
<dynamicField name="*_tDF" type="date" indexed="true" stored="true"/>
 

さて、異なる値型のすべてのdynamicFieldが格納され、solrServer.addBean(doc)とsolrResponse.getBeans(Doc.class)を使用して取得されます。これはSolr 3.2.0です。1.4では動作しませんでした。

  同じタグがついた質問を見る

dynamicmapfieldpojosolrj