16

我需要访问一个 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)

我用谷歌搜索,但给出的原因与要求不符。显示文件(路径)的事实可能意味着目录不为空。
谢谢

4

3 回答 3

28

另一个提示,因为我遇到了同样的错误,发现在创建索引后我没有关闭 IndexWriter,事实证明它非常不可原谅。在我的 indexdirectory 中,我有一些 .lock 文件,没有 Segments 或 segments.gen 文件,这是 Reader 正在寻找的。请参阅此处#3 了解详情

于 2013-12-24T20:14:07.603 回答
9

基本上,错误消息表明 Lucene 没有在索引目录中找到正确的文件。我建议检查以下内容:

  1. 验证索引目录的路径是否符合您的想法。
  2. 使用的 Nutch 和 Lucene 版本是否匹配?这可能源于版本差异。
  3. 有权限问题吗?你能读取目录中的文件吗?
  4. 尝试使用Luke查看索引。如果不能,则索引中可能存在一些损坏。

如果所有这些都没有帮助,请发布代码的索引部分。

于 2010-09-27T09:26:27.400 回答
2

2020年偶然发现这个问题:

我打开了 IndexReader 使用

org.apache.lucene.index.DirectoryReader#open(org.apache.lucene.store.Directory)

方法而不是

org.apache.lucene.index.DirectoryReader#open(org.apache.lucene.index.IndexWriter)

第一个导致上述错误,而后一个在空目录上工作正常 - 似乎是这里的方法。

于 2020-08-31T15:31:35.450 回答