Zoie入门与应用.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Zoie 入门与应用------Zoie Introduction(之一) 从 现在开始搞垂直搜索,最近看了下相关的文档,感觉 LinkedI 贡献的开源项目,基于Lucene 的实时搜索、索 引拓展性能上还是比较好的,这 使得Lucene 家族又壮大了一些,以后还会关注一下其他的基于Lucene 的开源项目。 闲话不说这是本人整理的一些资料,有的是从官方网站上转载,有的 是翻译,以后在介绍完原理后还会加一些实例代 码。 1. What is Zoie? Zoie是一个建立在 Apache Lucene 提供实时索引和检索的系统,它简单并且有良好的拓展性。其需要逻辑上独立的索引 和搜索子系统相对紧密的结合在一起,从而使得一篇文档一经索引,就能够立刻被搜索的到。这些功能对于时间敏感的 信息,比如新闻,博客等非常的重要. 2008年 7月 19 号,Zoie 由 LinkedI 捐赠,并部署在一个实时大范围的消费网站LinkedI 上,能够应对每天 对数百万的搜索和成百上千的数据更新。 目前 Zoie 2.0.0 的已经发布,能够与 Lucene 2.9.x 兼容。 2. Design Goals: 新增的文档能够立即被搜索到; 索引的过程不影响检索的性能; 文档的增加一定不要形成索引文件碎片,这样会有损检索性能; 文档的更新和删除一定不要影响检索性能 3. Other features: 快速的将Lucene 的 docid 映射成 uid 快速的将uid 映射成 Lucene 的 docid(反映射) 为实时更新索引自定义索引合并策略(MergePolicy),产生剩余索引片管理 用局部擦除删除垃圾索引数据优化搜索性能 全部用 JMX Console 实现索引的管理和监控(手动操作) …….. 4. Architecture Diagram: 5. TimeLine of Indexing Zoie 的实现-------- The Implement of Zoie System (之二) 1. ZoieSystem是 Zoie的重要组成部分,其一方面通过实现 DataConsumer接口而完成了索引功能,一方面通过实 现 IndexReaderFactoryZoieIndexReaderR extends IndexReader而完成了搜索功能,并将二者紧密的结合在一 起。 2. ZoieSystem Architecture Diagram: 对于索引系统来讲,ZoieSystem是一个 DataConsumer,也即是一个消费者,其有函数 consume用于消费DataEvent 对象而完成索引功能。 既然其是消费者,则向其提供数据的就应该是生产者DataProvider,要想使用 Zoie建立实时搜索系统,必须提供 自己的生产者。 对于搜索系统来讲,ZoieSystem是一个 IndexReaderFactory,也即是一个能够得到读取索引的 IndexReader的工厂, 其有函数 getIndexReaders得到所有的 IndexReader列表,从而可以完成对索引数据读取的功能。 熟悉 Lucene的读者应该很清楚,要想对 Lucene的索引进行搜索,则首先要得到 IndexReader,然后根据 IndexReader 生成 IndexSearcher,从而可以进行搜索,收集结果,打分,排序等过程。既然 IndexReader可以通过 Zoie的工厂得 到,用户需要实现自己的搜索逻辑方可。 Zoie 的实时索引的原理(之三) 1. 当合并完毕后,硬盘索引会标记删除原来在内存索引中标记删除的文档,被合并的索引以及其标记删除的文档全部丢弃,索引 进入 Working 状态。 1. 利用两个内存索引一个硬盘索引实现实时搜索 当系统启动的时候,索引处在 Sleeping 状态,这时 Mem 结构中,只有索引 A,索引 B 为 null,索引 A 为_currentWritable, _currentReadOnly 为 null,_diskIndexReader 为硬盘索引的 IndexReader。由于内存中索引的 IndexReader 是每添加完文档后立刻更 新的,而且速度很快,而硬盘上的索引一旦打开,在下次合并之前,一直使用,可以保证新添加的文档能够马上被搜索到。 2. 当 A 中的文档数量达到一定的数量的时候,需要同硬盘上的索引进行合并,因此要进入 Working 状态。合并是一个相对比较长 的过程,这时候会创建内存索引 B,在合并过程中新添加的文档全部索引到 B 中。此时的 Mem结构中,有内存索引 A,内存索引 B,索 引 A 为 currentReadOnly,索引 B 为 currentWritab

文档评论(0)

精品文库 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档