首页 > 代码库 > Twitter实时搜索系统EarlyBird
Twitter实时搜索系统EarlyBird
twitter对存档的tweet使用lucene做全量索引,新发的推文则是实时索引,实时检索(10秒之内索引)。实时索引和检索系统叫EarlyBird。
感觉写得比较清楚简洁,只要这些信息足够真实可信,完全可以做实现参考。
我简单做了几个记录:
1)基于lucene + java,michael busch是lucene committer
2)词典直接用哈希表,因此不支持term的prefix,偏序查询,哈希表使用开放链址法实现,避免大量小对象gc开销
3)postings列表在optimize之前直接用数组,按照docid生序不压缩,因此查找可以直接二分查找不需要跳跃表结构.posting增长时分配空间以block为单位,分配空间按指数预留空间
4)12个segment11个是read-only,只有一个是可读可写的,一个segment中tweet数量超过8.4m时,segment经过optimize(不是lucene中的段合并,而是做压缩)变为read only.
5)11个只读段并发读不需要锁,唯一的可读可写段使用volatile关键字实现高效同步(jvm memory barrier)
论文地址:
http://www-users.cs.umn.edu/~gade/earlybird.pdf
感觉写得比较清楚简洁,只要这些信息足够真实可信,完全可以做实现参考。
我简单做了几个记录:
1)基于lucene + java,michael busch是lucene committer
2)词典直接用哈希表,因此不支持term的prefix,偏序查询,哈希表使用开放链址法实现,避免大量小对象gc开销
3)postings列表在optimize之前直接用数组,按照docid生序不压缩,因此查找可以直接二分查找不需要跳跃表结构.posting增长时分配空间以block为单位,分配空间按指数预留空间
4)12个segment11个是read-only,只有一个是可读可写的,一个segment中tweet数量超过8.4m时,segment经过optimize(不是lucene中的段合并,而是做压缩)变为read only.
5)11个只读段并发读不需要锁,唯一的可读可写段使用volatile关键字实现高效同步(jvm memory barrier)
论文地址:
http://www-users.cs.umn.edu/~gade/earlybird.pdf
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。