2010-04-17 9 views
9

मैं सोलर सर्वर पर दस्तावेज़ों को अनुक्रमणित करने के लिए क्लाइंट के रूप में solrj का उपयोग कर रहा हूं।एक ग्राहक के रूप में solrj का उपयोग कर सोलर से सूचकांक हटाना

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

server.deleteById("id:20"); 
server.commit(true,true); 

इस के बाद, खोज परिणाम भी ऊपर दस्तावेज़ है। यह नहीं पता कि इस कोड के साथ क्या गलत हो रहा है। कृपया मुझे समस्या के साथ मदद करें।

धन्यवाद! आप दस्तावेज़ हटाने के बाद,

server.deleteById("20"); 
server.commit(); 

उत्तर

16

जब आप deleteById फोन, बस आईडी क्वेरी सिंटैक्स के बिना उपयोग करते हैं,। सर्वर प्रतिबद्ध लाइन के बाद ।

UpdateRequest req = new UpdateRequest(); 
    req.setAction(UpdateRequest.ACTION.COMMIT, false, false); 
    req.add(docs); 
    UpdateResponse rsp = req.process(server); 
+0

मैं इस का इस्तेमाल किया है, लेकिन इस मेरे मामले –

+0

में काम नहीं कर रहा होगा यह काम भले ही दस्तावेज़ आईडी पूर्णांक हैं? –

1

सर्वर के लिए प्रतिबद्ध है और निम्न पंक्तियां जोड़ें:

-1

तो deleteById केवल तभी काम करेगा जब आप केवल एक विशेषता का उपयोग करके अपनी कुंजी बना रहे हों। तो, मेरे पास ऐसा मामला था जहां आईडी एकाधिक गुणों का संयोजन था जैसे कर्मचारी Id + deptId। लेकिन, मेरी तालिका में कर्मचारी आईडी & deptId अलग कॉलम के साथ-साथ उस पर बनाए गए इंडेक्स के साथ था। तो जब मैं एक रिकॉर्ड हटाना चाहता था तो मेरे पास केवल कर्मचारी था और डीआईपीआईडी ​​नहीं था। मैंने curl कमांड का उपयोग करने के लिए जहां आप कॉलम और उसके मान निर्दिष्ट कर सकते हैं और यह पूरे रिकॉर्ड को हटा देगा।

उदा। कर्ल http://localhost:8983/solr/update --डेटा : '-H' सामग्री-प्रकार: टेक्स्ट/xml; charset = utf-8 '

0

उपयोग विधि deleteByQuery() क्वेरी से मेल दस्तावेजों को हटाने के लिए:

server.deleteByQuery("id:20"); 
server.commit();