我需要访问lucene索引(通过使用Nutch抓取几个网页创建)但是它给出了上面显示的错误:
java.io.FileNotFoundException: no segments* file found in org.apache.lucene.store.FSDirectory@/home/<path>: files:
at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:516)
at org.apache.lucene.index.IndexReader.open(IndexReader.java:185)
at org.apache.lucene.index.IndexReader.open(IndexReader.java:148)
at DictionaryGenerator.generateDict(DictionaryGenerator.java:24)
at DictionaryGenerator.main(DictionaryGenerator.java:56)
我用谷歌搜索,但给出的理由不符合要求。 显示文件(路径)的事实可能意味着目录不是空的 谢谢
答案 0 :(得分:19)
另一个提示,因为我遇到了同样的错误,发现创建索引后我没有关闭IndexWriter,事实证明它非常不可原谅。在我的indexdirectory中,我有一些.lock文件,而没有读取器正在寻找的segment或segments.gen文件。 有关详细信息,请参阅here#3
答案 1 :(得分:9)
基本上,错误消息表明Lucene没有在索引目录中找到正确的文件。我建议检查以下内容:
如果所有这些都无济于事,请发布代码的索引部分。
答案 2 :(得分:0)
在2020年偶然发现此问题:
我已经使用
打开了IndexReader org.apache.lucene.index.DirectoryReader#open(org.apache.lucene.store.Directory)
方法代替
org.apache.lucene.index.DirectoryReader#open(org.apache.lucene.index.IndexWriter)
第一个错误导致上述错误,而第二个错误在空目录下正常工作-似乎可以解决此问题。