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

问题描述 投票:0回答:1

我们的搜索引擎使用 Lucene.NET 库 (4.8.0-beta000015)。我们的服务器意外关闭,从那时起我们就收到此错误:

不支持格式版本(资源:BufferedChecksumIndexInput(MMapIndexInput(path="index\path o\segments.gen"))):0(需要在-2和-3之间) 在 Lucene.Net.Index.SegmentInfos.FindSegmentsFile.Run(IndexCommit 提交) 在 Lucene.Net.Index.SegmentInfos.FindSegmentsFile.Run()

是否有任何解决方案可以在不重新创建索引的情况下解决此问题?或者我们怎样才能防止这种情况再次发生?

我们的系统运行在.netcore 6上

找不到任何解决方案,仅相关主题,但都说要重新创建索引。我们承担不起这个费用,因为完整的索引创建大约需要 1 天。

lucene full-text-search lucene.net asp.net-core-6.0
1个回答
0
投票

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

重要:在运行此命令之前,请务必创建索引的备份副本。

安装 lucene-cli 工具。确保您使用的是用于创建索引的相同版本

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

接下来,使用

--dry-run
选项运行索引修复命令以查看它将采取什么操作。如果输出多于控制台缓冲区的容量,则将标准输出重定向到日志文件。

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

记下该命令将删除的任何文档,并准备一个重新创建它们的方法。另请注意该命令需要多长时间,因为您的服务器至少需要这段停机时间来进行修复(可能更多)。

最后,运行命令修复索引。您必须在操作期间关闭对索引的任何写入。如果您有能力的话,关闭所有读取也可能是个好主意。

lucene index fix [<INDEX_DIRECTORY>] --verbose

参考文献

© www.soinside.com 2019 - 2024. All rights reserved.