2012-11-09 15 views
12

मेरा सोलर इंडेक्स में डुप्लिकेट मान वाले एक बहुविकल्पीय फ़ील्ड हैं। मैं डुप्लिकेट कैसे हटा सकता हूं?बहुगुणित फ़ील्ड में सौर डुप्लिकेट मानों को हटा रहा है

क्या अनुक्रमणित करते समय बहुगुणित क्षेत्र में डुप्लिकेट मानों को ओवरराइट करना संभव है?

धन्यवाद

उत्तर

1

आप क्लाइंट साइड पर इसे संभाल करने के लिए डुप्लिकेट मानों को दूर करने की आवश्यकता होगी।

टोकन को फ़िल्टर करने के लिए आप RemoveDuplicatesTokenFilterFactory (उसी स्थिति में एक ही पाठ के लिए काम करता है) जैसे कार्यान्वयन को अनुकूलित कर सकते हैं। मूल रूप से एक एक्सटेंशन लिखें। या

इसके अलावा, यदि बहुमुखी क्षेत्र का उपयोग केवल पहलू के लिए करते हैं, तो पहलू वाले क्षेत्र में मूल्य केवल एक बार गिना जाता है। तो यदि आप कई समान मान जोड़ते हैं, तो यह पहलू गिनती प्रविष्टि में एक ही मान के रूप में दिखाई देगा। इसका परीक्षण किया है। आप भी पुष्टि कर सकते हैं।

हालांकि, डुप्लिकेट मान लंबाई में परिवर्तन का कारण बनेंगे और इसलिए स्कोरिंग पर असर पड़ सकता है।

0

या आप इसे सोलर में संभाल सकते हैं, लेकिन UpdateRequestProcessor में ताकि यह अनुक्रमण से पहले होता है और आपको विश्लेषण श्रृंखला के बारे में जानने की आवश्यकता नहीं है।

आप जावा या ScriptUpdateProcessor

3

मैं एक ही पूरा करने के लिए संघर्ष कर रहा था के साथ पटकथा भाषाओं के एक नंबर का उपयोग कर सकते हैं। यह मेरे लिए काम किया। अपने solrconfig.xml

<updateRequestProcessorChain name="deduplicateMultiValued" default="true"> 
     <processor class="org.apache.solr.update.processor.UniqFieldsUpdateProcessorFactory"> 
      <lst name="fields"> 
       <str>multivaluedFieldXYZ</str> 
      </lst> 
     </processor> 
     <processor class="solr.RunUpdateProcessorFactory" /> 
</updateRequestProcessorChain> 
+0

सोलर के वर्तमान संस्करण के साथ, आंतरिक lst/str लाइनें इस तरह की एक पंक्ति बन जाएंगी: multivaluedFieldXYZ Ethan

+0

बस ध्यान दें कि यह कॉपीफ़िल्ड्स के लिए काम नहीं करेगा, लेकिन केवल जब दस्तावेज़ प्राप्त होता है अनुक्रमित। यह उस बिंदु पर सभी डुप्लिकेट आवेषण हटा देगा। –

0

यह विन्यास पार्टी के लिए वास्तव में देर Solr 5.3.1 के लिए काम करता

<updateRequestProcessorChain name="distinct-values" default="true"> 
    <processor class="solr.DistributedUpdateProcessorFactory"/> 
    <processor class="solr.UniqFieldsUpdateProcessorFactory"> 
     <str name="fieldName">field1</str> 
     <str name="fieldName">field2</str> 
    </processor> 
    <processor class="solr.RunUpdateProcessorFactory" /> 
</updateRequestProcessorChain> 
2

, लेकिन शीर्ष जवाब Solr 6.0 में मेरे लिए काम नहीं किया करने के लिए नीचे प्रोसेसर जोड़े एक बहुविकल्पीय क्षेत्र पर डुप्लिकेट प्रविष्टि जोड़ने का प्रयास करने के लिए। UniqFieldsUpdateProcessorFactory से पहले एक प्रोसेसर ठीक था। तो कुछ मेरी solrconfig.xml को इस तरह जोड़ना काम:

<updateRequestProcessorChain name="uniq-fields"> 
<processor class="org.apache.solr.update.processor.DistributedUpdateProcessorFactory"/> 
<processor class="org.apache.solr.update.processor.UniqFieldsUpdateProcessorFactory"> 
    <str name="fieldName">YourFieldA</str> 
    <str name="fieldName">yourFieldB</str> 
</processor> 
<processor class="solr.RunUpdateProcessorFactory" /> 

कहाँ YourFieldA और YourFieldB अपने Schema.xml में खेतों परिभाषित कर रहे हैं। ध्यान रखें कि आप उचित requestHandler यानी को यह जोड़ना होगा कि:

<requestHandler name="/update" class="solr.UpdateRequestHandler" > 
<lst name="defaults"> 
    <str name="update.chain">uniq-fields</str> 
</lst> 

यह केवल शामिल होने से डुप्लिकेट नहीं रोका जाएगा, लेकिन यह भी निर्दिष्ट क्षेत्रों के लिए अद्यतन पर अपने सूचकांक से सभी डुप्लिकेट को हटा दें।

संबंधित मुद्दे