Lucene的版本迭代
2017-12-25 23:01
225 查看
Lucene已经发展到Lucene 7了,不过,Lucene 7是一个前瞻性的版本,其实,Lucene还在同时升级Lucene5 和Lucene6.
Lucene在之前的版本迭代中,不断尝试新的设计思想,不断引入新的与时俱进的功能。这也导致Lucene的大版本不兼容,在我之前的项目中,从Lucene2升级到Lucene4,再升级到Lucene6,都不能平滑过渡,需要修改项目中使用到Lucene的部分代码。
对Field的设计更加合理,使用内部类来区分Field的具体类型:
更改为了:
BooleanQuery的add方法也改了,原有的是
现在也更加面向对象了:
QueryParser的parse方法不再是static的了,需要先获取QueryParser实例。
IndexReader类方法签名有稍许改动。
对Field的设计更加合理,使用了枚举来区分Field的具体类型:
IndexWriter中的很多构造函数都被移除了
Search中的很多构造函数都被移除了
QueryParser中的很多构造函数都被移除了
删除了Hits类,使用collector去获取Hits
索引优化,使Lucene可能近实时。
对Field的设计更加合理,拆分了Field的各种功能:
StringField:不分词、被索引。
TextField:分词、被索引。
StoredField:不被索引,当然也不被分词。
扩展了打分算法:
通过编码器Codec机制使得Lucene索引格式与Lucene架构解耦。
增加了模块化API,以模块化方式提供了非结构化信息管理分析器和空间信息搜索模块。
所有文件的访问方法都已基于Java NIO2
Lucene已实现了为每个segment和每次提交都存储了唯一的id,从而使得Lucene能够更加精确地实现索引文件的复制
在索引合并的过程中,IndexWriter总会在合并前检测已经损坏的segment,这就意味着当升级到5.0版本时,对4.X系列的索引进行合并时,会有一定的延迟
Lucene在之前的版本迭代中,不断尝试新的设计思想,不断引入新的与时俱进的功能。这也导致Lucene的大版本不兼容,在我之前的项目中,从Lucene2升级到Lucene4,再升级到Lucene6,都不能平滑过渡,需要修改项目中使用到Lucene的部分代码。
从Lucene 1.4.3升级到Lucene 2.1
2004年7月,Lucene发布第一个版本Lucene 1.4。多年后的2007年才发布Lucene 2,其中,Lucene 2.4.0使用的最广泛。从Lucene 1.4.3升级到Lucene 2.1,可能需要了解这些改变:对Field的设计更加合理,使用内部类来区分Field的具体类型:
Field(String name,String value,boolean store,boolean index)
更改为了:
Field(String name, String value, Field.Store store, Field.Index index, Field.TermVector termVector)
BooleanQuery的add方法也改了,原有的是
add(Query q, boolean required, boolean prohibited)
现在也更加面向对象了:
add(Query q, BooleanClause.Occur occur)
QueryParser的parse方法不再是static的了,需要先获取QueryParser实例。
IndexReader类方法签名有稍许改动。
从Lucene 2 升级到Lucene 3.x
Lucene 于2009年11月发布了 Lucene 3.0,这一版本改动了很多API,并加入了Java5的新特性:如泛型、可变参数、枚举。从Lucene 2 升级到Lucene 3.x,可能需要了解这些改变:对Field的设计更加合理,使用了枚举来区分Field的具体类型:
new Field("id",ids[i],Field.Store.YES,Field.Index.NOT_ANALYZED_NO_NORMS)
IndexWriter中的很多构造函数都被移除了
Search中的很多构造函数都被移除了
QueryParser中的很多构造函数都被移除了
删除了Hits类,使用collector去获取Hits
索引优化,使Lucene可能近实时。
从Lucene 3.x 升级到Lucene 4.x
Lucene 于2012年10月发布了Lucene 4.0,该版本重构了Lucene,基本是Lucene划时代的产品。直接升级需要改动特别多代码,在实际操作中一般是直接使用新版本Lucene 4,只迁移数据。对Field的设计更加合理,拆分了Field的各种功能:
StringField:不分词、被索引。
TextField:分词、被索引。
StoredField:不被索引,当然也不被分词。
扩展了打分算法:
org.apache.lucene.search.DefaultSimilarity扩展到了
org.apache.lucene.search.similarities.*
通过编码器Codec机制使得Lucene索引格式与Lucene架构解耦。
增加了模块化API,以模块化方式提供了非结构化信息管理分析器和空间信息搜索模块。
从Lucene 4.x 升级到Lucene 5.x
Lucene 于2015年2月发布了Lucene 5.0,从Lucene 5开始,Lucene 开始考虑向前兼容。所有文件的访问方法都已基于Java NIO2
Lucene已实现了为每个segment和每次提交都存储了唯一的id,从而使得Lucene能够更加精确地实现索引文件的复制
在索引合并的过程中,IndexWriter总会在合并前检测已经损坏的segment,这就意味着当升级到5.0版本时,对4.X系列的索引进行合并时,会有一定的延迟
相关文章推荐
- 转的 侵立删 java版本迭代
- 大家期待已久的Lucene.Net 2.0 以上版本正确下载地址
- 网络编程 -- RPC实现原理 -- Netty -- 迭代版本V3 -- 编码解码
- 由Lucene版本不同引起的一些问题
- 盘古分词在 Lucene.net 2.9 版本下搜索没有结果的原因分析及盘古分词2.0版本要开发的新功能
- 打造属于自己的支持版本迭代的Asp.Net Web Api Route
- (原创)《Lucene in Action 2nd Edition》Chapter11.2.2中的工具类SearcherManager翻译为C#版本
- solr和lucene历史版本地址
- 【Lucene】4.X版本使用Sort排序并评分
- Apache LuceneTM5.0.0 版本即将发布
- C++之实现两个链表合并(迭代和递归版本)(19)---《那些奇怪的算法》
- 单链表反序递归版本和迭代版本
- lucene版本升级到4.6.0以上之后使用mmseg4j分词器遇到的问题
- 小菜学习Lucene.Net(更新3.0.3版本使用)
- chromedriver各版本映射表以及迭代记录
- Android App的版本升級(迭代/更新)
- 关于程序迭代版本功能设计文档
- iOS版本迭代加速,Android 4.0用户亦愈发活跃
- Lucene 6.0以上版本使用IKAnalyzer分词器
- iOS开发:2017 苹果APP上架更新应用版本注意事项及APP版本迭代步骤方法