Java Lucene 2.4.1用Lucene 6.2.1重新编制指数

Java Lucene 2.4.1用Lucene 6.2.1重新编制指数,java,apache,lucene,Java,Apache,Lucene,我是lucene的新手,尝试将lucene 2.4.1指数重新编制为lucene 6.2.1指数 我遇到过各种论坛,了解到通过lucene中的IndexUpgrader实用程序是可行的,但这里的问题是-我不能直接将lucene 2.4.1索引转换为lucene 6.2.1索引 我需要将索引升级到lucene 3.x.x和lucene 4.x.x等等 我很想知道是否有其他选择 请大家在这件事上帮助我 谢谢, Abhishek我想,除了IndexUpgrader之外的东西,除非经过少数开发人员的认证

我是lucene的新手,尝试将lucene 2.4.1指数重新编制为lucene 6.2.1指数

我遇到过各种论坛,了解到通过lucene中的
IndexUpgrader
实用程序是可行的,但这里的问题是-我不能直接将lucene 2.4.1索引转换为lucene 6.2.1索引

我需要将索引升级到lucene 3.x.x和lucene 4.x.x等等

我很想知道是否有其他选择

请大家在这件事上帮助我

谢谢,
Abhishek

我想,除了
IndexUpgrader
之外的东西,除非经过少数开发人员的认证,否则就不会那么可靠

我不知道还有其他任何工具,但您可以做的是——为您的目标环境(shell/bash/batch等)编写一个脚本,该脚本使用此工具一次性升级索引,而不是在任务太多或手动命令不可用时手动触发多个命令

您也可以编写自己的Java类/实用程序来一次性升级,因为您可以使用
ProcessBuilder
或类似的工具从类中发出Java命令,或者您也可以在各种“索引编辑器”上调用
upgrade()
方法

下面是一个bash脚本示例,您可以根据自己的需求进行测试和调整-

总而言之,您必须在这个工具之上编写一个包装器,以便根据您自己的需要自动完成这个过程


参考-

我想,除了
IndexUpgrader
之外的东西不会那么可靠,除非得到少数开发人员的认证

我不知道还有其他任何工具,但您可以做的是——为您的目标环境(shell/bash/batch等)编写一个脚本,该脚本使用此工具一次性升级索引,而不是在任务太多或手动命令不可用时手动触发多个命令

您也可以编写自己的Java类/实用程序来一次性升级,因为您可以使用
ProcessBuilder
或类似的工具从类中发出Java命令,或者您也可以在各种“索引编辑器”上调用
upgrade()
方法

下面是一个bash脚本示例,您可以根据自己的需求进行测试和调整-

总而言之,您必须在这个工具之上编写一个包装器,以便根据您自己的需要自动完成这个过程


参考-

感谢您回复Sabir,关于同一lucene升级场景,还有一个问题:如何验证重新索引数据的正确性?如何确保所有索引都已从lucene 2.4.1正确转换为lucene 6.2.1,以及需要包含哪些lucene JAR以重新编制索引?lucene 3.x、lucene 4.x等有多个版本的JAR。我不太确定验证部分,作为预防措施,您应该始终有一个备份。也许,您可以使用我猜的checkIndex()方法,因为您正在依次启动升级命令,您将需要所有升级版本的核心和反向编解码器jar。再次感谢@Sabir Khan的快速响应,由于数据量巨大(可能为200-300 GB),备份将不可行。我找不到lucene 3.x和lucene 4.x编解码器jar,而且当我将lucene索引从2.x转换为3.x,然后再转换为4.x时,不需要编解码器jar,但当我尝试将lucene 4.x索引转换为lucene 5.x时,它抱怨lucene 42编解码器jar。请参阅以下错误:线程“main”java.lang.IllegalArgumentException中的异常:无法加载编解码器“Lucene42”。您是否忘记添加lucene backward Codecodes.jar?5.x的哪个版本?感谢您回复Sabir,关于同一lucene升级场景的另一个问题:如何验证重新索引的数据的正确性?如何确保所有索引都已从lucene 2.4.1正确转换为lucene 6.2.1,以及需要包含哪些lucene JAR以重新编制索引?lucene 3.x、lucene 4.x等有多个版本的JAR。我不太确定验证部分,作为预防措施,您应该始终有一个备份。也许,您可以使用我猜的checkIndex()方法,因为您正在依次启动升级命令,您将需要所有升级版本的核心和反向编解码器jar。再次感谢@Sabir Khan的快速响应,由于数据量巨大(可能为200-300 GB),备份将不可行。我找不到lucene 3.x和lucene 4.x编解码器jar,而且当我将lucene索引从2.x转换为3.x,然后再转换为4.x时,不需要编解码器jar,但当我尝试将lucene 4.x索引转换为lucene 5.x时,它抱怨lucene 42编解码器jar。请参阅以下错误:线程“main”java.lang.IllegalArgumentException中的异常:无法加载编解码器“Lucene42”。你忘了添加lucene backward codecs.jar吗?5.x的哪个版本?