# some java_imports here
index = RAMDirectory.new
IndexWriter.new(index, StandardAnalyzer.new(Version::LUCENE_30), IndexWriter::MaxFieldLength::UNLIMITED )
IndexSearcher.new(index)生成
NativeException: org.apache.lucene.index.IndexNotFoundException: no segments* file found in org.apache.lucene.store.RAMDirectory@668c640e lockFactory=org.apache.lucene.store.SingleInstanceLockFactory@afd07bb: files: []这一切为什么要发生?
发布于 2011-11-28 19:04:46
IndexSearcher需要一个特殊的目录结构,它无法找到它,因为没有段被写入(当您向IndexWriter添加文档时,它们在内存中排队,并且当使用的内存量达到给定的阈值或当调用commit()时,这些内存中的数据结构被刷新到磁盘,从而产生Lucene所说的段)。
您需要做的是在打开IndexSearcher之前通过调用commit显式地创建一个段。
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)发布于 2013-12-25 04:19:04
与调用显式提交不同,您可以确保关闭IndexWriter,它应该隐式提交并关闭Lucene4中的资源
https://stackoverflow.com/questions/8263110
复制相似问题