未找到段* 文件

2022-09-03 04:12:56

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

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


答案 1

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


答案 2

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

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

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


推荐