将solr 1.4索引升级到solr 3.3?

时间:2011-07-11 11:43:39

标签: solr indexing luke

我使用apache solr 1.4进行了现有的索引构建。

我想在版本3.3中使用此现有索引。如您所知,索引格式在3.x之后发生了变化,那么怎么可能这样做呢?

我已使用Luke将XML导出现有索引(即1.4版本)。

2 个答案:

答案 0 :(得分:7)

有两种方法可以做到这一点:

  1. 如果你的索引未被优化,那么只需优化它 - 这将在整个过程中升级文件格式。

  2. 如果您的索引已经过优化,则无法执行此操作。而是使用solr提供的命令行工具(您的路径可能与我的不同

    java -cp work/Jetty_0_0_0_0_8983_solr.war__solr__k1kf17/webapp/WEB-INF/lib/lucene-core-3.3.0.jar org.apache.lucene.index.IndexUpgrader -verbose /path/to/index/directory
    
  3. 但是,请注意,这只会更改文件格式 - 它不会停止弃用警告,因为除非您另有说明,否则solrconfig.xml默认仍假设您使用旧的索引格式。见http://www.mail-archive.com/dev@lucene.apache.org/msg23233.html

    你的日志文件中仍然可能会出现这样的行:

    WARNING: LowerCaseFilterFactory is using deprecated LUCENE_24 emulation. You should at some point declare and reindex to at least 3.0, because 2.x emulation is deprecated and will be removed in 4.0
    

    直到告诉solrconfig.xml您已准备好使用新索引格式的所有功能。您可以通过将以下内容添加到solrconfig.xml(在顶层,就在abortOnConfigurationError设置之后)来执行此操作。

    <!-- Controls what version of Lucene various components of Solr
         adhere to.  Generally, you want to use the latest version to
         get all bug fixes and improvements. It is highly recommended
         that you fully re-index after changing this setting as it can
         affect both how text is indexed and queried.
      -->
    <luceneMatchVersion>LUCENE_33</luceneMatchVersion>
    

答案 1 :(得分:0)

如果您有数据:最好的方法是索引solr 3.3中的所有新数据 您可以使用数据导入处理程序为导出的XML文件编制索引。

如果构建新索引不适合您,那么您有不同的可能性:

据我所知,Solr 3.3可以读取旧索引。 所以一个想法可能是使用分片。旧数据(只读)的一个分片是新数据的另一个分片。不幸的是,在此解决方案中,您将无法修改旧数据。