Lucene的版本迭代

Lucene已经发展到Lucene 7了,不过,Lucene 7是一个前瞻性的版本,其实,Lucene还在同时升级Lucene5 和Lucene6.
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,可能需要了解这些改变:

  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)
  2. BooleanQuery的add方法也改了,原有的是
    add(Query q, boolean required, boolean prohibited)
    现在也更加面向对象了:
    add(Query q, BooleanClause.Occur occur)
  3. QueryParser的parse方法不再是static的了,需要先获取QueryParser实例。
  4. IndexReader类方法签名有稍许改动。

从Lucene 2 升级到Lucene 3.x

Lucene 于2009年11月发布了 Lucene 3.0,这一版本改动了很多API,并加入了Java5的新特性:如泛型、可变参数、枚举。从Lucene 2 升级到Lucene 3.x,可能需要了解这些改变:

  1. 对Field的设计更加合理,使用了枚举来区分Field的具体类型:
    new Field("id",ids[i],Field.Store.YES,Field.Index.NOT_ANALYZED_NO_NORMS)
  2. IndexWriter中的很多构造函数都被移除了
  3. Search中的很多构造函数都被移除了
  4. QueryParser中的很多构造函数都被移除了
  5. 删除了Hits类,使用collector去获取Hits
  6. 索引优化,使Lucene可能近实时。

从Lucene 3.x 升级到Lucene 4.x

Lucene 于2012年10月发布了Lucene 4.0,该版本重构了Lucene,基本是Lucene划时代的产品。直接升级需要改动特别多代码,在实际操作中一般是直接使用新版本Lucene 4,只迁移数据。

  1. 对Field的设计更加合理,拆分了Field的各种功能:
    StringField:不分词、被索引。
    TextField:分词、被索引。
    StoredField:不被索引,当然也不被分词。
  2. 扩展了打分算法:
    org.apache.lucene.search.DefaultSimilarity扩展到了
    org.apache.lucene.search.similarities.*
    1. 通过编码器Codec机制使得Lucene索引格式与Lucene架构解耦。
    2. 增加了模块化API,以模块化方式提供了非结构化信息管理分析器和空间信息搜索模块。

从Lucene 4.x 升级到Lucene 5.x

Lucene 于2015年2月发布了Lucene 5.0,从Lucene 5开始,Lucene 开始考虑向前兼容。

  1. 所有文件的访问方法都已基于Java NIO2
  2. Lucene已实现了为每个segment和每次提交都存储了唯一的id,从而使得Lucene能够更加精确地实现索引文件的复制
  3. 在索引合并的过程中,IndexWriter总会在合并前检测已经损坏的segment,这就意味着当升级到5.0版本时,对4.X系列的索引进行合并时,会有一定的延迟
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cj96248

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值