我正在编写一个实用程序来从Java中升级3.6.2的Lucene索引。 Lucene的IndexUpgrader仅适用于上一个主要版本。目前6.6.0是最新的。这意味着我必须通过顺序主要版本(3到4,4到5,最后是5到6)升级索引。
这涉及运行Lucene的IndexUpgrader的多个版本。不幸的是,IndexUpgrader包装在Lucene jar中的相同位置,但有多个版本:
Lucene v4.9.1 : org.apache.lucene.index.IndexUpgrader
Lucene v5.5.4 : org.apache.lucene.index.IndexUpgrader
Lucene v6.6.0 : org.apache.lucene.index.IndexUpgrader
......等等。未来版本可能会遵循这种模式。
我的问题是我可以在我的应用程序中包含3个不同版本的Lucene,并在不将Lucene源代码复制到我的包结构中的情况下实例化特定版本的IndexUpgrader吗?如果是这样,怎么样?
答案 0 :(得分:2)
我有很好的权限(Lucene项目上的真正开发人员),不能保证升级多个主要版本时的兼容性。也就是说,如果您从5.x.x版本开始,将索引升级为6.x.x版本,然后尝试在版本7中使用该索引,则绝对不能保证该索引可以正常工作。
因此,即使您知道如何完成类加载,也可以在应用程序中使用多个版本的Lucene,并使整个想法正常运行,结果索引也可能无法正常工作。