Lucene 5.x与3.6.0版本更新对比及核心变动

需积分: 50 4 下载量 80 浏览量 更新于2024-09-09 收藏 21KB DOCX 举报
"lucene5.X与lucene3.6.0的版本差异" 在Lucene的版本升级过程中,从3.6.0到5.x带来了许多显著的变化和改进,主要集中在API、性能优化以及功能增强等方面。以下是这些关键变化的详细说明: 1. **API变动**: - lucene-5900:`*InfixSuggester`和`ICUCollationKeyAnalyzer`的构造函数进行了调整,同时`test_version_current`从测试框架中移除。这表示API的使用方式发生了变化,开发者需要根据新的构造函数来创建对象。 - lucene-4535:`oal.util.FilterIterator`现在被标记为内部API,意味着它不再推荐用于公共代码,可能在后续版本中被移除。 - lucene-4924:`DocIdSetIterator.docID()`现在必须在未定位时返回1。这对所有继承自`DocIdSetIterator`的类(如`DocsEnum`和`DocsAndPositionsEnum`)产生了影响,开发者需要更新相关实现。 2. **性能优化**: - lucene-5127:`FixedGapTermsIndex`的内存使用量降低,同时移除了`IndexWriterConfig.setTermIndexInterval`和`IndexWriterConfig.setReaderTermsIndexDivisor`,因为这些选项在Lucene 4的默认解码器中无效。要配置术语索引间隔,应在创建编码器时直接设置。 - lucene-5388:对`Collector` API进行了重构,以便每个叶子节点使用专用的收集器,这可能会提高搜索性能。 3. **字段比较器和收集器的重构**: - lucene-5702:`FieldComparator` API进行了重写,采用了类似收集器的每叶API,增强了字段比较的效率。 - lucene-5608, lucene-5565:空间前缀树(SpatialPrefixTree)和单元格API进行了重构,不再使用字符串标记,而是动态地重新声明细胞,增加了灵活性。 4. **索引和关闭行为的改变**: - lucene-4246:`IndexWriter.close()`现在总是在发生异常时执行关闭操作。新的`IndexWriterConfig.setCommitOnClose(true)`(默认为true)决定了是否在关闭前进行提交。 5. **其他变化**: - lucene-5666:取消倒排访问(如排序、分类、分组等)现在使用`DocValuesFieldCache` API代替,这对于处理`FieldCache`提供了更高效的解决方案。 这些变化表明,从Lucene 3.6.0升级到5.x版本需要开发者对代码进行相应的调整,以适应新的API和功能。这些改动旨在提高Lucene的性能、可维护性和功能性,但同时也可能需要用户进行一些适配工作,以确保代码兼容新版本。