创建IndexSearcher抛出IOException读取过EOF
当我尝试创建一个new IndexSearcher(fsDir)
类的对象时,它抛出IOException read past EOF
。 搜索索引不是基于RAM的,它是基于NFS的(使用FSDirectory
lucene类)。
我用Google搜索并得到了这个
没有许可问题,也没有锁定,我用lockhunter检查过
所以必须有写权限,没有人使用该目录。
这是在过去的2-3个月里工作的。 昨天突然停止工作,文件夹中的所有索引文件。
还有什么可能导致这个例外? 有没有像索引是2-3个月(某个时期),然后它过期并给出这个例外?
我得到了答案,花了很多时间在它上面,它会给出exception(IOException读取过EOF):
If Directory does not give write permission If someone else is using(locked) If some segment is corrupted
对于我的情况它已损坏:(。但Exception没有说明这一点(可以告诉一些FIleCurroptedException
)。这可能对其他人有帮助。
每次我得到它,它有两个同名的索引文件(记录)(键 – 我使用mongo-lucene)。 我删除了一个带有空缓冲区的记录,它让我继续前进,而不必重新构建整个索引。 这似乎是一个multithreading问题。 另一个触发器似乎是索引非文本文件