व्हाउप्स!
यह "सीधे जावा" लुसीन है, लेकिन यह अन्य किस्मों पर भी लागू हो सकता है।
Lucene में 4.0.0 DirectoryReader.indexExists()
के लिए एपीआई का कहना है
रिटर्न सही एक सूचकांक निर्दिष्ट निर्देशिका में मौजूद रहने पर।
लेकिन Lucene 4.10.2 में DirectoryReader.indexExists()
के लिए एपीआई
रिटर्न सच कहते हैं अगर एक सूचकांक संभावना निर्दिष्ट निर्देशिका में मौजूद है। नोट एक भ्रष्ट सूचकांक मौजूद है कि, या यदि करने की प्रक्रिया में एक सूचकांक
करने से ... हाँ, यह मध्य वाक्य टूट जाता है। एनबी मैंने स्रोत से सीधे अपना जावाडोक संकलित किया, लेकिन ऑनलाइन अध्याय में एक ही अधूरा वाक्यांश देखा जा सकता है। इतना ही नहीं, लेकिन मैंने ल्यूसीन 6.0.0 एपीआई देखा, और यह बिल्कुल वही है।
"रिटर्न" वाक्यांश तथापि है:
सच एक सूचकांक मौजूद; झूठी अन्यथा
... लेकिन मुझे वर्तमान में विश्वास है कि एक खाली निर्देशिका कभी-कभी (?) true
(मेरे यूनिट परीक्षण से) लौटाएगी। वैसे भी, मैं इस पर भरोसा नहीं करता।
यदि आप एक खाली निर्देशिका पर IndexReader
बनाते हैं, तो ऐसा लगता है कि इसके सभी विधियां अपवाद फेंकने के बिना वापस आ जाएंगी। आप indexReader.numDocs()
पर जा सकते हैं, और यह 0 वापस आ जाएगा, लेकिन यह साबित नहीं करता है कि वहां कोई अनुक्रमणिका नहीं है, केवल Document
एस नहीं है। निश्चित रूप से, आपकी आवश्यकताओं के आधार पर पर्याप्त हो सकता है।
इसी प्रकार, आप IndexReader
से बना सकते हैं, और आप IndexWriter
बना सकते हैं। इनमें से कोई भी खाली निर्देशिका के साथ कोई स्पष्ट समस्या नहीं होगी।
बेहतर समाधान:
try {
directoryReader = DirectoryReader.open(fsDir);
} catch (org.apache.lucene.index.IndexNotFoundException e) {
...
}
यह प्रतीत होता है, जहाँ तक मैं बता सकता हूँ, विश्वसनीय होने के लिए।
Lucene.net में यह अधिभार नहीं है। – Marek
लुसेन.Net का कौन सा संस्करण अधिभार खो रहा है? यह 2.4 में है। –
मैं "सीधे जावा" ल्यूसीन का उपयोग कर रहा हूं। 4.10 में इंडेक्सवाइटर। + में केवल एक कन्स्ट्रक्टर है। लेकिन मुझे समझ में नहीं आता कि आप अपने समाधान से क्या पूछना चाहते हैं: यह पता लगाएं कि पहले से ही एक इंडेक्स है या नहीं। –