设为首页 收藏本站
查看: 813|回复: 0

[经验分享] Apache Lucene 2.9的改进

[复制链接]

尚未签到

发表于 2015-7-31 08:41:24 | 显示全部楼层 |阅读模式
  Lucene 2.9的大部分重心放在了性能优化方面,这体现在从低端的内部基础结构改进到索引管理方式等多个方面。Lucene的索引数据库由一系列分离的“片断”组 成,每个片段存放在独立的文件中。当你向索引中添加文档时,便会不断创建一些可以合并的新片断。Lucene会在FieldCache中缓存字段信息,不 过在Lucene 2.4以及之前的版本中,加载字段缓存的开销相对较高,尤其在2.4版本中还会不断重新加载整个字段缓存。在发布2.9版本的准备过程中,Lucene团 队意识到,在进行合并或删除的时候片断的改变频率通常比较高,不过较早的片断则更趋向于保持不变。因此,修改后的字段缓存只会加载更新过的片断。
DSC0000.jpg
  Lucene跨片断加载FieldCache的效率也不够好。因此,2.9版本会为每个片段分别管理FieldCache,以此避开跨片断加载FieldCache的需求。这个改变的效果非常明显,Lucid Imagination的Mark Miller运行了一个简单的性能测试,表明在5,000,000个不同字符串下的情况下,Lucene 2.9相对于2.4版本会获得15倍左右的性能提高:
Lucene 2.4: 150.726s
Lucene 2.9: 9.695s
  另一个显著的性能提高在于重开(re-opening)搜索的时候。Lucene 2.9引入了新的IndexWriter.getReader()方法,它可用于搜索目前完整的索引,包括当前IndexWriter会话中还没有提交的 改变,这带来了接近于实时搜索的能力。此外,你还可以调用IndexWriter.setMergedSegmentWarmer()方法进行“预热”, 这样那些片断便可以立即投入使用了。
  另一个重大变化则是数字的处理方式,尤其是在范围查询(如“给我找出价格在0.5到9.99英镑之间的CD”)的场景下。在2.9版之 前,Lucene的查询完全基于文本,因此对于数字的处理则变成了基于字符串的精确编码。这种做法经常会生成大量独立的关键字,Lucene需要通过遍历 的方式来构建整个结果集。在此之前,许多开发人员使用了自定义的编码规则来应对这种情况,不过Lucene 2.9已经自带对数字的处理方式。Field和Query类会采取合适的精度进行索引和搜索,这样大大降低了需要搜索的关键字数量,使查询的响应能力得以 显著提高。
  2.9版本还引入了新的查询类型和适用性更广的多关键字查询(通配、前缀等等)方式,以及新 的针对波斯语,阿拉伯语及中文的分析器。此外,这次更新还包括更好Unicode支持,一个新的查询分析框架,以及对地理位置的查询,它允许根据距离信息 对文档进行过滤和排序(如“找出我家5英里范围内的所有干洗店”)。你可以在这里找到完整的改进列表。
  一般来说,Lucene会在主要版本之间保持完整的兼容性,但是CHANGES.txt的“向后兼容策略”一节中列举了Lucene 2.9在许多地方对兼容性的破坏。对于2.9版本的升级操作很可能需要一次重新编译,合适完整的回归测试以及其它在这方面的努力。基于2.9版本的重新编 译也会提示出所有即将被废弃的方法,这样开发人员便可以升级他们的应用程序,并为3.0版本作好准备。这是个明智的做法,因为Lucene 3.0会放弃对Java 1.4的支持,并且删除所有2.9版本中被标记为“deprecated”的功能。
查看英文原文:Apache Lucene 2.9 Released

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-92494-1-1.html 上篇帖子: 安装Apache提示APR not found的解决办法 下篇帖子: org.apache.catalina.LifecycleException: Failed to start component [StandardEngin
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表