2011-11-24 12 views
6
# some java_imports here 
index = RAMDirectory.new 
IndexWriter.new(index, StandardAnalyzer.new(Version::LUCENE_30), IndexWriter::MaxFieldLength::UNLIMITED) 
IndexSearcher.new(index) 

उत्पन्नIndexNotFoundException अगर IndexSearcher खाली RAMDirectory पर बुलाया

NativeException: org.apache.lucene.index.IndexNotFoundException: no segments* file found in [email protected] [email protected]d07bb: files: [] 

ऐसा क्यों होता है?

+0

के रूप में काम करता है और बंद संसाधनों का उपयोग आप लुसीन का किस संस्करण का उपयोग कर रहे हैं? मैं लुसीन 3.0.3 (नवीनतम 3.0 रिलीज) का उपयोग कर अपनी समस्या का पुन: उत्पन्न नहीं कर सकता। Pacman के अनुसार – jpountz

+0

3.4.0 – Reactormonk

उत्तर

11

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

आपको अपने इंडेक्स खोजकर्ता को खोलने से पहले प्रतिबद्धता को कॉल करके स्पष्ट रूप से सेगमेंट बनाना है।

index = RAMDirectory.new 
writer = IndexWriter.new(index, StandardAnalyzer.new(Version::LUCENE_30),IndexWriter::MaxFieldLength::UNLIMITED) 
writer.commit() 
IndexSearcher.new(index) 

इसके अलावा इस IndexWriter निर्माता Lucene 3.4 में हटाई गई है, यदि आप इसके बजाय IndexWriterConfig आप IndexWriter कॉन्फ़िगर करने के लिए उपयोग करना चाहिए: इसके बजाय स्पष्ट करने को बुलाने की

iwConfig = IndexWriterConfig.new(Version::LUCENE_34, StandardAnalyzer.new(Version::LUCENE_34)) 
writer = IndexWriter.new(index, iwConfig) 
0

, आप IndexWriter बंद करने के लिए सुनिश्चित कर सकते हैं जो परोक्ष चाहिए लुसीन 4

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