java - 在Java中通过多个主要版本以编程方式升级Lucene索引

标签 java indexing lucene upgrade

我正在编写一个实用程序,用于用 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

...等等。 future 的版本可能会遵循这种模式。

我的问题是,我是否可以在应用程序中包含 3 个不同版本的 Lucene,并实例化特定版本的 IndexUpgrader,而不将 Lucene 源代码复制到我的包结构中?如果是这样,怎么办?

最佳答案

据我所知(Lucene 项目中非常聪明的开发人员),升级多个主要版本时无法保证兼容性。也就是说,如果您从版本 5.x.x 开始,将索引升级到 6.x.x 版本,然后尝试在版本 7 中使用该索引,则绝对不能保证该索引能够正常工作。

因此,即使您弄清楚如何欺骗类加载以便可以在应用程序中拥有多个版本的 Lucene 并让整个想法发挥作用,生成的索引也可能无法正常工作。

关于java - 在Java中通过多个主要版本以编程方式升级Lucene索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45926082/

相关文章:

python - 尝试从 python 中的列列表创建 bool 掩码

java - 如何使用 apache lucene 索引优化搜索

java - 如何将 jre 从 java 12.0.2 添加到 eclipse mars 4.5.2

java - 如果没有 java 对话,Aptana .js 文件将无法保存

HTML5 Boilerplate .htaccess 重写为 index.php

java - 如何访问Lucene索引中记录的关键字?

java - 使用 Apache Tika 提取文本,然后在删除停用词后获取频繁出现的单词

java - 用于搜索建议的数据结构

java - Eclipse,包消失了?

mysql - SQL : Data manipulation and indexes