我使用 Lucene 的索引器在编写了大约 16GB 大小的索引文件后,在索引操作期间似乎崩溃了。
由于我不知道的原因,写入控制台的堆栈跟踪重复了三遍。为简洁起见,我只提供了重复的单个部分。这是 Lucene 写入控制台的堆栈跟踪:
Lucene.Net.Index.MergePolicy+MergeException: Exception of type 'Lucene.Net.Index.MergePolicy+MergeException' was thrown. --->
System.IO.FileNotFoundException: Could not find file 'PATH_TO_MY_INDEX_DIRECTORY\_xx.cfs'.
File name: 'PATH_TO_MY_INDEX_DIRECTORY\_xx.cfs'
at Lucene.Net.Index.IndexWriter.HandleMergeException(Exception t, OneMerge merge)
at Lucene.Net.Index.IndexWriter.Merge(OneMerge merge)
at Lucene.Net.Index.ConcurrentMergeScheduler.MergeThread.Run()
--- End of inner exception stack trace ---
at Lucene.Net.Index.ConcurrentMergeScheduler.HandleMergeException(Exception exc)
at Lucene.Net.Index.ConcurrentMergeScheduler.MergeThread.Run()
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
当我使用 Luke 的 Java 版本打开生成的日志时,索引被删除(可能是因为它已损坏,例如“write.lock”文件仍然存在),尽管这可能是 Luke 的错误或配置错误。
创建这个索引大约需要 36 小时,我不想第三次再做一次(这不是第一次发生)。
我不知道是什么原因造成的。我能做些什么?
我使用的是 Lucene.net 2.9.2,因为它是为 .NET 3.5 构建的最后一个版本。