2011-01-26 13 views
9

मेरे पास एक बड़ी अनुक्रमणिका है, और अनुक्रमण प्रक्रिया के दौरान एक त्रुटि हुई थी। तो रीइंडेक्सिंग से बचने के लिए जो कई दिनों लगते हैं, मैं बस विशिष्ट फ़ील्ड और रीइंडेक्स को हटाना चाहता हूं। क्या कोई सुझाव है?क्या आप सोलर इंडेक्स में किसी दस्तावेज़ से फ़ील्ड हटा सकते हैं?

उत्तर

4

आप नहीं कर सकते। समाधान दस्तावेज़ प्राप्त करना होगा, अस्थायी रूप से स्मृति में स्टोर करना होगा, इसे हटाएं, आवश्यक फ़ील्ड अपडेट करें (निकालें, जोड़ें) और फिर दस्तावेज़ को इंडेक्स में वापस जोड़ें। अनुक्रमणिका को अपडेट तर्क -Dcommit बल का प्रयोग

java -Ddata=args -Dcommit=yes -jar post.jar "<delete><query>*:*</query></delete>" 

, इसलिए, सभी दस्तावेजों को नहीं हटा रहे हैं जब आप न चाहते सावधान रहें:

3

आप इसके आईडी द्वारा अनुक्रमित दस्तावेज़ को हटा सकते हैं। यदि आप फ़ील्ड को हटाकर स्कीमा को बदलना चाहते हैं, तो हाँ, आपको रीइंडेक्स करना होगा।

+0

+1 या फ्लै पैरामीटर के माध्यम से आउटपुट प्रारूप में फ़ील्ड को वापस करने से बचें;) – Karussell

1

आप सभी सूचकांक हटाने के आदेश का उपयोग करते हुए और इस तरह एक प्रश्न हटा सकते हैं।

+0

सोलर [लिंक] (http://lucene.apache.org/solr/tutorial.html) के दस्तावेज़ में हटाएं एक दस्तावेज, लेकिन सोलर के अक्सर पूछे जाने वाले प्रश्न में क्वेरी [लिंक] (http://wiki.apache.org/solr/FAQ#How_can_I_delete_all_documents_from_my_index.3F) – josegil

7

यदि आप सोलर 4 का उपयोग कर रहे हैं, तो आप अधिक आसानी से क्षेत्र को हटाने के लिए परमाणु अद्यतन http://wiki.apache.org/solr/Atomic_Updates का उपयोग कर सकते हैं। उदाहरण के लिए:

curl http://localhost:8983/solr/update?commit=true -H 'Content-type:application/json' --data-binary '[{"id": "630911fa-711a-3944-b1d2-cda6857f9827", "field_to_be_removed": {"set": null}}]' 
+0

मैं सभी "आईडी" के लिए कुछ फ़ील्ड कैसे हटा सकता हूं? उदाहरण के लिए यह आईडी के लिए एक निश्चित फ़ील्ड को हटा देता है: 630 911fa-711a-3944-b1d2-cda6857f9827। लेकिन मुझे यह सब आईडी चाहिए। – Uttam

5

आप अगर यह कर सकते हैं क्षेत्रों के अपने बाकी यानी stored="true " .as शून्य मान सेट करके इस प्रकार जमा हो जाती है।

<add> <doc>

<field name="employeeId">05991</field> // your unique key field 

    <field name="skills" update="set" null="true" /> //what ever field you want to delete 

</doc> </add>

स्रोत: https://wiki.apache.org/solr/UpdateXmlMessages

0

आप अनुक्रमित मूल्य w.r.t. नष्ट कर सकते हैं सोलर में एक क्षेत्र लेकिन क्षेत्र नहीं।

यदि आप वास्तव में अनुक्रमण के दौरान एक विशिष्ट फ़ील्ड को हटाना चाहते हैं तो आपको दस्तावेज़ अनुक्रमणित करने से पहले schema.xml फ़ाइल में फ़ील्ड को कॉन्फ़िगर करना चाहिए।

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