Lucene.net损坏的索引(segments.gen)

dkqlctbz  于 12个月前  发布在  Lucene
关注(0)|答案(1)|浏览(205)

我们使用Lucene.NET库(4.8.0-beta 000015)作为我们的搜索引擎。我们的服务器意外关闭,从那以后我们得到这个错误:
不支持格式版本(资源:BufferedChecksumIndexInput(MMapIndexInput(path=“index\path\to\segments.gen”):0(需要介于-2和-3之间)在Lucene.Net.Index.SegmentInfos.FindSegmentsFile.Run(IndexCommit commit)在Lucene.Net.Index.SegmentInfos.FindSegmentsFile.Run()
有没有解决方案可以在不重新创建索引的情况下解决这个问题?或者我们如何防止这种情况再次发生?
我们的系统运行在.netcore 6上
找不到任何解决方案,只有相关的主题,但都说要重新创建索引。我们负担不起,因为完整的索引创建需要大约1天。

6za6bjd0

6za6bjd01#

您可以尝试运行index fix command来修复损坏的段,然后重新添加必须删除的任何文档来修复这些段。

重要提示:在运行此命令之前,请务必对索引进行备份。

安装lucene-tool。确保你使用的是创建索引时使用的同一版本

dotnet tool install lucene-cli -g --version 4.8.0-beta00015

字符串
接下来,运行带--dry-run选项的index fix命令,看看它将采取什么操作。如果输出超过控制台缓冲区的容量,则将标准输出重定向到日志文件。

lucene index fix [<INDEX_DIRECTORY>] --verbose --dry-run


记下该命令将删除的任何文档,并准备一种方法来重新创建它们。还要注意该命令需要多长时间,因为您至少需要服务器上的停机时间来进行修复(可能更多)。
最后,运行命令来修复索引。在操作期间,必须关闭对索引的任何写入。如果可以的话,关闭所有读取也是一个好主意。

lucene index fix [<INDEX_DIRECTORY>] --verbose

参考资料

相关问题