我正在编写一个实用程序,以从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并实例化IndexUpgrader的特定版本,而无需将Lucene源代码复制到我的程序包结构中吗?如果是这样,怎么办?

最佳答案

我有很好的权限(在Lucene项目上确实是聪明的开发人员),在升级多个主要版本时不能保证兼容性。也就是说,如果您从5.x.x版本开始,将索引升级为6.x.x版本,然后尝试在版本7中使用该索引,则绝对不能保证该索引会起作用。

因此,即使您知道如何完成类加载,也可以在应用程序中使用多个版本的Lucene并使整个想法起作用,但是生成的索引可能仍然无法工作。

10-07 18:54
查看更多