[原]Lucene 4.8.0 发布了,变化一如既往的大,新特性一一解读
Lucene 4.8.0 发布了,变化一如既往的大,新特性一一解读
10年之前, 你是1.0; 10年之后,你是4.8 。放在10年这个时间跨度上看,也许变化就没那么大了。
看看这次发布有哪些变化吧:
1、Apache Lucene 现在要求Java的最低版本为:Java 7 , update 55 ;推荐使用 Oracle Java 7 或 OpenJDK 7 ,之前版本的JVM bug 会影响到lucene。
2、Apache Lucene全面兼容 Java 8。
3、所有的索引文件开始存储checksums,在索引合并和读取的时候进行有效性检查。减少出现某个索引文件(物理)损坏带来的问题,主要是针对硬件或者JVM bug 引起的索引损坏。
4、提供了针对第一次搜索结果集合的重打分(权重调整)API;相当于对搜索结果的二次自定义排序。
5、AnalyzingInfixSuggester 类提供了支持NRT的自动建议功能。
6、把基于批量处理的打分过程 bulk scoring 和基于迭代的打分过程分离了,这对于批量打分的过程更高效一些。
7、在建立索引的时候针对Hash term 使用了 MurmurHash3 的hash方法,很高效的方法。
http://zh.wikipedia.org/wiki/Murmur%E5%93%88%E5%B8%8C
8、 IndexWriter现在支持更新二进制类型的字段了。
9、优化了 HunspellStemFilter 占用内存的大小(10至100倍的减少)
Hunspell 是一种检查拼写spellcheck流行的方法, OpenOffice中就用了它来进行拼写检查。
HunspellStemFilter 是TokenFilter的扩展,可以用这个算法来过滤词的不同变形(时态,语气等)。
中文的Token应该享受不到这个特性。
http://en.wikipedia.org/wiki/Hunspell
10、Lucene现在使用Java 7中的文件系统函数,比如即使在索引打开的时候,也可以删除索引文件。
11、修复了NativeFSLockFactory 中的一个严重的bug :允许多个IndexWriter获得一个lock。
所以强烈建议升级到 lucene 4.8 。
参考:
1、 http://lucene.apache.org/core/4_8_0/changes/Changes.html#v4.8.0.new_features
3、欢迎订阅作者 微博