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

[经验分享] Lucene 3.5和Solr 3.5:大幅降低内存用量、SearcherManager和深度分页支持

[复制链接]
累计签到:12 天
连续签到:1 天
发表于 2015-7-18 13:20:31 | 显示全部楼层 |阅读模式
  Lucene项目管理委员会宣布Apache Lucene 3.5.0和Apache Solr 3.5.0已经可以使用。Lucene是一个高性能、支持全文搜索的文本搜索开发库。Solr是一个独立的搜索服务器,其核心使用了Lucene来做索引和搜索。
  Lucene 3.5.0版本的主要变化包括:


  • 降低内存消耗。现在建立词汇索引需要的内存比以前降低了3到5倍,实现这一点,是使用了更有效的内存数据结构来保存词汇。
  • 深度分页支持。加入IndexSearcher.searchAfter方法,它在特定的ScoreDoc之后会返回结果。你可以将上一页的最后一个document传递给searchAfter方法,以得到下一页的结果。
  • SearcherManager。加入了org.apache.lucene.search.SearcherManager类, 简化了在多个搜索线程中对IndexSearcher的分享和重新开启。底层的IndexReader实例如果不再被引用,可以安全关闭,其中使用了 IndexReader的引用计数。还使用了获取方法来取得一个IndexSearcher,还有释放方法来关闭取得的IndexSearcher。
  • SearcherLifetimeManager。加入了org.apache.lucene.search.SearcherLifetimeManager类,提供跨越多个请求的索引的统一视图。它简化了服务多个请求的同一个IndexSearcher实例的使用,在分页或上下钻取搜索结果时,有更好的用户体验。
  • IndexWriter.optimize()弃用。IndexWriter.optimize方法不再使用,并被重新命名为forceMerge。这么做,是不再鼓励使用该方法,因此它的操作成本很高,而且只能在静态索引上使用。
  • IndexReader.reopen()重命名。IndexWriter.reopen方法替代为openIfChanged。如果索引没有变化,IndexReader.openIfChanged会返回null。一般来说,相对开启新的IndexReader,该方法成本更低。
  • NGramPhraseQuery。org.apache.lucene.search.NGramPhraseQuery是PhraseQuery类,针对n-gram模型的查询做了优化。当使用n-gram分析时,可以加速查询速度30%-50%。
  可以访问Lucene 3.5发布说明来了解完整的变更列表。
  Solr 3.5.0的主要变化有:


  • Lucene 3.5.0。来自Lucene 3.5.0的缺陷修复和改进,主要是保持词汇索引需要的内存数量大幅减少。
  • 分布式结果分组。支持分布式搜索结果分组,也被称为field collapsing。该特性限制了每“组”展示的文档数目,作为一个字段的唯一值定义,现在支持分布式搜索。
  • 语言检测。新的模块“langid”加入了在索引前检测文档语言的能力,以辅助正确决策。使用了Apache Tika的LanguageIdentifier 或Cybozu的语言检测程序库,作为UpdateRequestProcessor实现。
  • 支持数字类型的sortMissingFirst和sortMissingLast。包括Trie在内的数字类型和日期类型现在支持sortMissingFirst和sortMissingLast。
  • HunspellStemmerFilter。添加对Lucene的 HunspellStemmerFilter支持,这样就可以支持90种语言的stemming词根缩减功能。Hunspell本来是一个高级的拼写检查 库,它因为用于OpenOffice套件而出名,现在在Solr中使用,提供stemming词根缩减。
  • hl.q参数。加入了可选的hl.q参数,如果给定值,在Highlighter(HighlightComponent类)中会重写q参数。
  可以访问Solr 3.5发布说明来了解完整的变更列表。
  Yonik Seeley是Apache Solr的创始人,同时也是Lucid Imagination的首席开源架构师和联合创始人,他回答了InfoQ针对本次Lucene和Solr发布的一些问题。
  InfoQ:对于大部分Lucene和Solr的用户来说,这次发布能够让他们马上用起来的有哪些功能?
  Yonik Seeley:Lucene和Solr的用户可以受益于词汇索引大幅减少的内存用量、改进后的向量强调(vector highlighting)等等。Solr还加入了对分布式分组的支持,提供针对缺少首值或末值的数字字段排序的能力。Lucene还加入了对深度分页的优化。
  InfoQ:您是否推荐开发人员使用默认的新SearcherManager
  Yonik Seeley:对于刚刚开发基于Lucene的项目的人来说,用新的Lucene SearcherManager是个好的开始,但是没必要把正常使用的自定义搜索的manager代码迁移过来。对于Solr的用户,searcher的管理从一开始就是内部实现的细节了。
  InfoQ:Lucene和Solr 3.6有什么计划?
  Yonik Seeley:在开源软件中很难说,因为没有正式的路线图。大部分的重大突破都发生在主干代码中,发布时自然就是4.0了。Lucene已经完全更新了对索引机制,支持codec。Solr正在逐步转向使用NoSQL data store,使用更先进的分布式索引功能。
  InfoQ:我们什么时候才能看到带有NRT功能的Solr正式版发布?
  Yonik Seeley:LucidWorks是我们的Apache Solr的商业版本,基于主干代码的稳定版本(4.0-dev),具备NRT功能。至于这个功能何时移植回Solr 3.x,现在还不清楚。Lucene和Solr 4.0版本应该在2012年某个时候发布。
  想对它们有所了解,您可以从Apache的镜像站点下载Lucene 3.5和Solr 3.5。Maven的用户要使用Lucene,其groupId为org.apache.lucene,artifactId模式为lucene-*,版本是3.5.0。您也可以订阅Lucene和Solr的邮件列表获取最新信息。
  查看英文原文:Lucene 3.5 and Solr 3.5 - Substantial RAM Reduction, SearcherManager, Deep Paging Support

运维网声明 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-88016-1-1.html 上篇帖子: solr 4.10 and tomcat 下篇帖子: 1.4.2 solr字段类型--(1.4.2.7)字段属性使用案例
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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