2008-10-13 10 views
7

में सभी इंडेक्स हटाएं मैं पहले से बनाए गए सूचकांक सभी को हटाना चाहता हूं। मैं Lucene.net का उपयोग कर रहा हूँ।Lucene.net

Term term = new Term(); //empty coz i want to delete all the indices 
IndexReader rdr = IndexReader.Open(_directory); 

rdr.DeleteDocuments(term); 
rdr.Close(); 

लेकिन मैं त्रुटि मिलती है:

मैं निम्नलिखित की कोशिश की। किसी भी विचार के बारे में कैसे जाना है?

उत्तर

16

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

1

जैसा कि जॉकिन ने कहा था, निर्देशिका के भीतर सभी फाइलों को हटाना सबसे आसान था। अर्थात।;

DirectoryInfo directoryInfo = new DirectoryInfo(@"IndexLocation"); 
Parallel.ForEach(directoryInfo.GetFiles(), file => { 
      file.Delete(); 
     }); 
0

Lucene.Net API Doc से:

public static IndexReader Open(Directory);

विशेषज्ञ: रिटर्न एक पढ़ा/दिया निर्देशिका में सूचकांक पढ़ने, एक कस्टम IndexDeletionPolicy साथ IndexReader लिखें। नोट: 3.0 में से शुरू होने से यह पढ़ेगा केवल इंडेक्स रीडर। सूचकांक दूषित होने पर दूषित इंडेक्स अपवाद को फेंकता है। यदि निम्न स्तर की आईओ त्रुटि है तो IOException को फेंकता है।

मैं लगता है कि आप

IndexReader rdr = IndexReader.Open(_directory, true); 
6

की कोशिश करनी चाहिए, हालांकि धागा वर्ष मुझे लगता है कि यह जवाब देने के लिए बेहतर है है .. किसी और के लिए उपयोगी हो सकता है। हटाएं सभी() इंडेक्सवाइटर की विधि अनुक्रमित सभी दस्तावेजों को हटाने के लिए उपयोग की जा सकती है।

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