2014 年 4 月 28 日,Apache Lucene 4.8.0 正式发布。由于老的 JDK 版本的一些 JVM bug 会影响到 Lucene,所以新版本的 Lucene 不再支持 JDK 7u55 以下的 Java 版本。另外 Lucene 4.8.0 全面兼容 Java 8。以下是 Lucene 4.8.0 中的一些重大改进:
- 所有的索引文件开始存储端到端的校验以在索引合并和读取的时候进行有效性检查。这样可以确保因为 JVM 内部的一些硬件问题或者 BUG 而引起的索引损坏可以被及时发现。
- 提供了新的
Rescorer/QueryRescorerAPI 对 second-pass 的重新打分。 - AnalyzingInfixSuggester 类提供了支持 NRT(near-real-time)的自动建议功能。
- 使用 Lucene 的 Sort 类简化了 impact-sorted postings 的排序语义。
- 分离了 bulk scoring(基于批量处理的打分过程)和基于迭代的打分过程。
- 建立索引的时的 Hash term 模块改为使用高效的 MurmurHash3 算法。
- IndexWriter 开始支持更新二进制类型的字段。
- HunspellStemFilter 的内存占用比之前减少了 10 到 100 倍。
- 如果操作系统和文件系统允许,Lucene 会在提交时 fsyncs 目录元信息。
- 使用了 Java 7 的文件系统函数,所以在 windows 中,即使索引文件在打开(使用)的时候,也可以被删除。
- 修复了 NativeFSLockFactory 类中的一个严重的 bug,现在允许多个 IndexWriter 获取相同的锁。即使不持有锁,锁文件也不会再被从索引文件中删除。
Apache Lucene 是一个使用 Java 开发的高性能的全文检索引擎,读者可以从这里下载最新版本的 Lucene , 详细的改进说明可以阅读 Lucene ChangeLog 。此外,基于 Lucene 的 Solr 也更新到了 4.8.0 版本,读者可以到其官网了解相关信息。
参考文档:
感谢杨赛对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。




