- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)