2016-08-31 92 views
0

对于我们的项目,我们使用Lucene 5.5.0库来创建Lucene碎片,但是有一个ETL作业需要创建Lucene 4.10.3碎片,以便我们可以索引Solr cloud中的碎片索引。我想保持了Lucene版本5.5.0,所以我想通过API设置版本更具体的我这样做:不支持Lucene格式版本

val analyzer = new KeywordAnalyzer() 
val luceneVersion = Version.parseLeniently(version) 
analyzer.setVersion(luceneVersion) 

然而,当我试图指数产生碎片进入Solr cloud我收到以下错误信息:

错误CREATEing SolrCore 'ac_test2_shard2_replica1':无法创建核心[ac_test2_shard2_replica1]致:格式的版本不支持(资源:BufferedChecksumIndexInput(segments_1)):6(必须是在0和3之间)

基于this post的原因是由于创建的Lucene版本与Solr cloud版本不兼容。有人可以帮助我理解为什么创建的碎片仍然不兼容,我如何创建兼容的旧版碎片?

回答

0

只需在分析仪中设置版本就不会对索引的格式做任何事情。所有这些都确保您使用熟悉的分析规则,但与此问题无关。

您需要使用适当的编解码器以旧格式编写索引。特别是Lucene410Codec。您可以将编解码器设置为在您的IndexWriterConfig中使用。向后编解码器主要用于读取旧索引,而不是写入它们。我不确定是否将它用于您的目的甚至会起作用。

如果可能,我会建议您只使用兼容的Lucene版本。要么升级您的Solr实例,要么只是使用Lucene 4.10来完成这项工作。

+0

感谢您的详细解答。现在我有更好的想法如何阅读和写作旧格式的工作。 –