Lucene/Solr Optimize相关总结

Optimize就是优化的意思。说到Optimize,其实问题回归到两个本质问题:updata-in-place/update-out-of-place、restart。

1 When Optimize

索引update、deleted、add、update、deleted、add反反复复,导致索引“千仓百孔”、“指针琳琳散散”、“无用数据或者辅助数据增多”,最后影响相同的查询逻辑,越到后面检索性能逐渐糟糕。

2 How Optimize

整体optimize、局部optimize、混合optimize

整体optimize,就是对已经存在的索引,整体optimize下,本质就是基于原来索引进行索引重建。这个过程减少了文本IO、文本分析等开销。据经验对于一个个文本文件从磁盘建索引:建完后优化大约=1:0.6.也即基于索引构建索引二次构建时间开销大概是原来从文本构建的0.6.
这个数据规模5000w。超过5000w的可能优化比一定比原始重建省时,反而时间更长。 Lucene/solr
直接由现成的接口indexWriter.optimize(),调用下就可以了。

在最新的3.4
以后,不建议使用optimize,因为这个太耗时了。所以,在接下来的优化中,会逐步优化增量机制,平衡性能和索引规模下时间开销的。

句部optimize,就是对数据先分区(多个子应用),分区下再分组(多个hash分布),二级分组。这样可以对分区内优化、分组内优化、二级组内优化。这样通过降低规模来实现性能和时间平衡。Lucene2.9.1、solr1.4以及以后版本,支持mergePolicy插件化,这样继承默认的policy,然后IndexWriter中set新的policy,就可以针对segment或多目录索引进行局部optimize。

混合optimize,就是整体和局部都执行。这种情况下,整体的频率降低,局部的频率较高。从而实现阶段性的性能最佳。例如一个月一次整体optimize,每天局部optimize,这样可以保证在性能快要出现下滑时,及时restart到最佳性能点。

3 what optimize

索引optimize本质就是索引重建。如何最大程度大块大块利用之前的索引,将大大改进optimize性能。对应lucene默认的optimize来说,文本读取IO、文本分析时间将免去或者这部分开销大大降低。optimize另外一个本质就是restart。optimize就是业务逻辑的回归,有点类似垃圾回收后,内存有空间连续块。optimize之后,指针、存储变得更加紧蹙、高效。在lucene中mergePolicy决定对那些segment合并,或者满足什么属于的segment合并。而合并算法的本质是基于堆排序重新renew
索引。

Lucene/solr默认调参无法满足需求时,开始扩展mergePolicy,此时仍然无法满足需求,需要扣memory了。

抠memory:(1)
对象复用。对大批量、单一流向的操作来说,重用对象将大大降低堆内存消耗,减少ygc。lucene/solr3.4以及以后版本,已经重用document、field对象,批量操作性能更好。

(2)重用 待优化索引的大块对象或者大块数据,从而降低重复计算开销。这块的优化涉及lucene 合并算法。

重度复用的话,需要定做一些数据结构,例如,postlist的块独立化。这方面可以参考“wangsou”,详情不变透露!

(3)调整基础cache大小,做到与os pagecache同步或者改变os
pagecache策略。这个问题属于定制index下的os,除了google、baidu、sousou、sogou等大牛已经执行了,其他公司由于业务特性,都很少去优化os这一层。

4 notice

(1)第一次文本建索引属于IO、CPU密集性应用,Optimize上IO密度降低、CPU密度提升。Optimize过程中IO次数尽管少了,memory消耗增多,但是关联的文件数据大小更大。需要平衡大文件颠簸Memory和DISK开销。

(2)Mutithread 多路归并,需要较好的硬件支持。

(3)尽量不要动用optimize,从业务上着手优化性能

本文来源于"阿里中间件团队播客",原文发表时间"2012-05-01 "

时间: 2024-12-20 21:10:06

Lucene/Solr Optimize相关总结的相关文章

Lucene/Solr 4.0-ALPHA – What’s In A Name?

Lucene & Solr 4.0-ALPHA were released on July 3, 2012. This is a huge milestone for the project, and the culmination of an idea that was spawned 2 years ago with the creation of the 4x branch. I've included the highlights from the release announcemen

lucene/solr的缺点

lucene/solr的缺点 solrlucenehadoop&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; 1) http 请求做了cache,8630.html">有时候会出现新数据不可见,cache滞后的问题.-cache优化下也不是问题 2) admin 后台页面,支持中文. 复杂查询语法上,欠友好.-自己稍加扩展也不是问题 3) swap core的时候,单结点多core,并且core对

Apache Lucene/Solr 3.3发布 基于Lucene的搜索服务器

Solr 是一种可供企业使用的.基于 Lucene 的搜索服务器,它支持层面搜索.命中醒目显示和多种输出格式.在这篇分两部分的文章中,Lucene Java 的提交人 Grant Ingersoll 将介绍 Solr 并向您展示如何轻松地将其表现优异的全文本搜索功能加入到 Web 应用程序中. 一旦用户需要某种信息,就可以立即搜索到这些信息,这种要求再也不是可有可无的了.随着 Google 和类似的复杂搜索引擎的出现,用户希望得到高质量的搜索结果,帮助他们快速.轻易地找到所需的信息.经理对您的h

solr教程,值得刚接触搜索开发人员一看(转载:http://blog.csdn.net/awj3584/article/details/16963525)

Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍solr的功能使用及相关注意事项;主要包括以下内容:环境搭建及调试;两个核心配置文件介绍;维护索引;查询索引,和在查询中可以应用的高亮显示.拼写检查.搜索建议.分组统计.拼音检索等功能的使用方法. 版本 作者/修改人 日期 V1.0 gzk 2013-06-04 1. Solr 是什么? Solr它是一种开放源码的.基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中.Solr 提供了层面

nutch,solr,安装配置,1KAnalyzer,

第1章引言 1.1nutch和solr Nutch 是一个开源的.Java 实现的搜索引擎.它提供了我们运行自己的搜索引擎所需的全部工具. Solr 拥有像 web-services API 的独立的企业级搜索服务器.用 XML 通过 HTTP 向它添加文档(称为做索引),通过 HTTP 查询返回 XML 结果. 1.2研究nutch 的原因 可能有的朋友会有疑问,我们有google,有百度,为何还需要建立自己的搜索引擎呢?这里我列出3 点原因: 透明度:nutch 是开放源代码的,因此任何人都

Lucene 3.6.2入门(13) Solr3.6.2简介以及整合Tomcat

/** * [Lucene3.6.2入门系列]第13节_Solr3.6.2简介以及整合Tomcat * @see Solr是一个高性能的,采用Java5开发的,基于HTTP和Lucene实现的开源企业级全文搜索引擎 * @see 可以粗暴的理解为:Lucene专注于搜索底层实现及算法优化,Solr专注于高层次的为企业服务的易于使 用和管理的搜索服务器 * @see 再粗暴一点理解为:Lucene和Solr的关系类似于,Ajax和jQuery,Servlet和Struts2,JAX-WS和CXF,

国内首套免费的《Nutch相关框架视频教程》(1-16)

//csdn博客目前暂时不再更新了,有兴趣请访问我的技术博客-晓的博客:zhangxiaolong.org  转自:http://yangshangchuan.iteye.com/blog/1837935  Nutch是一个Java开源项目,拥有近十年的历史,从一开始的搜索引擎演变为如今的网络爬虫.在Nutch的进化过程中,产生了Hadoop.Tika和Gora三个Java开源项目.如今这三个项目都发展迅速,极其火爆,尤其是Hadoop,其已成为大数据和云计算的代名词.     本人拥有多年Nu

solr由简单入门

第一章 一.简介          Solr是一个开源的,企业级搜索服务器.她已经是一个成熟的产品,用于强化网络站点的搜索功能,包括内部局域网. 她是用Java语言编写.使用HTTP和XML进行数据传输,Java的掌握对于学习Solr不是必须的.除了能返回搜索 结果外,还有包括高亮搜索关键字,方位导航(已广泛用于电子商务网站),查询关键字拼写校验,自动查询建议 和 "类似"查询 帮助更好定位搜索.     二.Lucene,solr的基础引擎          在相信介绍Solr前,我

搜索引擎solr和elasticsearch

版权声明:本文为博主原创文章,转载注明出处http://blog.csdn.net/u013142781 目录(?)[+] 刚开始接触搜索引擎,网上收集了一些资料,在这里整理了一下分享给大家. 一.关于搜索引擎 搜索引擎(Search Engine)是指根据一定的策略.运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统.搜索引擎包括全文索引.目录索引.元搜索引擎.垂直搜索引擎.集合式搜索引擎.门户搜索引擎与免费链接列表等.