2011-06-04 23 views
6

मैं कर रहा हूँ एक Solr Schema.xml में उदाहरण में विभिन्न प्रकार के गतिशील क्षेत्र के साथ स्कीमा है देखते हैं:Solrj और गतिशील फील्ड्स

<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 में प्रत्येक डेटा प्रकार के लिए अलग मानचित्र संदर्भ हो सकते हैं:

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

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

लेकिन यह संभव है एक ही नक्शे में संग्रहीत सभी गतिशील क्षेत्रों के लिए? मैं की तरह कुछ सोच रहा था:

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

केवल प्रलेखन मैं SolrJ, POJOs और गतिशील क्षेत्रों के बारे में पा सकते हैं एक पुराने सुविधा का अनुरोध है: https://issues.apache.org/jira/browse/SOLR-1129

उत्तर

9

मैं में 'नमूना' मूल्य का मिलान बाहर काम किया @ फ़ील्ड एनोटेशन को आपके schema.xml में क्या मेल नहीं करना पड़ेगा। तो, मैं अपने दस्तावेज़ को कक्षा में एक नक्शा बनाया:

@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 (डॉक्टर) और solrResponse.getBeans (Doc.class) का उपयोग करके संग्रहीत और पुनर्प्राप्त करें। यह सौर 3.2.0 के साथ है। यह 1.4 के साथ काम नहीं कर रहा था ..

+1

धन्यवाद टिम, इससे मेरी मदद मिली। मैंने यह भी पाया है कि गतिशील क्षेत्रों के लिए, फील्ड एनोटेशन के लिए एक पैटर्न प्रदान किया जाना चाहिए, भले ही यह केवल "*" हो। 'संग्रहीत' विशेषता भी गलत हो सकती है। –