如何阅读Lucene 4.10的Lucene 3.2索引?

如何阅读Lucene 4.10的Lucene 3.2索引?,lucene,lucene.net,Lucene,Lucene.net,获取Lucene 4.10读取3.2版本索引 升级到4.10仍然需要读取3.2索引。根据需要部署jre 7。在现有代码库中进行了所有错误的更改。在进行重新索引之前,仍然需要阅读3.2索引。如何读取Lucene 4.10的现有3.2索引(如果代码中有任何更改,将进行哪些更改)您可以使用,例如: IndexUpgrader upgrader = new IndexUpgrader(myIndexDirectory, Version.LUCENE_4_10_0); upgrader.upgrade()

获取Lucene 4.10读取3.2版本索引 升级到4.10仍然需要读取3.2索引。根据需要部署jre 7。在现有代码库中进行了所有错误的更改。在进行重新索引之前,仍然需要阅读3.2索引。如何读取Lucene 4.10的现有3.2索引(如果代码中有任何更改,将进行哪些更改)

您可以使用,例如:

IndexUpgrader upgrader = new IndexUpgrader(myIndexDirectory, Version.LUCENE_4_10_0);
upgrader.upgrade();
或者从命令行运行它:

java -cp lucene-core.jar org.apache.lucene.index.IndexUpgrader myIndexDirectory

您可以在
IndexWriterConfig
中设置用于解码索引的编解码器。将是此处使用的编解码器:

IndexWriterConfig config=new IndexWriterConfig(Version.LATEST,analyzer);
config.setCodec(新的Lucene3xCodec());
IndexWriter=newindexwriter(目录,配置);
IndexSearcher=newindexSearcher(newdirectoryReader.open(writer));

请记住,此编解码器严格为只读。任何添加、删除或更新文档的尝试都将导致引发
不支持操作异常。如果您希望支持写入索引,则必须升级索引()。

我可能错了,但我认为询问者有Lucene 3.x索引,他想用Lucene 4.x阅读,但您的答案要求他升级。@qualebs-他们说他们已将源代码升级到Lucene 4.10。如果他们正在升级到一个新的lucene版本,那么升级到合适的索引格式似乎是他们想要的行动方式。@femtoRgon谢谢。我将尝试重新索引,虽然我认为我应该能够阅读旧索引而不必重新索引。例如将Version.LUCENT设置为我的特定版本。到目前为止,它还不能以这种方式工作。由于3.2中的错误(内存泄漏),升级到了新版本。@Putnik-好的,如果你坚持的话。