Tup2王鹏云:实时搜索架构分析

1,450 views
1,274 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,450
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
23
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Tup2王鹏云:实时搜索架构分析

  1. 1. 实时搜索架构分析王鹏云wangpengyun@gmail.com@wangpengyun
  2. 2. 内容提要• 初识实时搜索• 搜索系统的基础知识• 传统搜索和实时搜索的区别• 实时搜索系统架构• 实时搜索的难点• 实时搜索开源工具
  3. 3. 初识实时搜索• 实时搜索不是新鲜事物 – 新闻搜索,社区搜索…… – 微博火爆让实时搜索成为热点• 商业价值 – 新信息聚合和放大 – 热门话题和趋势分析 – 搜索广告• 主要实时搜索引擎 – Google 、 bing 、 twitter 、 friendfeed……
  4. 4. 搜索系统的基础知识• Crawling – 抓取、超链分析• Indexing – 内容提取、分词、倒排索引• Searching – 查询分析、索引查询• Ranking – TF/IDF 、 PageRank 、其他特征
  5. 5. 传统搜索和实时搜索的区别• 结果呈现 – 静态 vs 动态• 搜索效果 – 相关性 vs 实时性 – PageRank vs 社会化特征• 数据获取 – 抓取 vs 推送• 数据分布 – URL 分布 vs 时间分布
  6. 6. 实时搜索系统架构图 antispam Internet ram switch ram queue index A index B High-level ui searcher snapshot/ add/modify/del merge parallel search result data disk index curPush API Spider merge data searcher disk index his A disk index his B Internet more……
  7. 7. 架构设计要点• 信息获取 – Push API ( preferred ) – Spider 抓取 • 定向 + 制导式抓取 • 模板 + 启发式信息提取 – 队列 • Topic 订阅式 • 支持信息重放 – 独立 antispam 模块 • 易于性能扩展 • 快速演进
  8. 8. 架构设计要点( cont. )• 信息删除 / 修改 – 删除做标记(合并或重建时实际删除) – 修改 = 删除 + 添加• 内存索引 – 加快索引速 • 边写边读 – 控制内存占用大小 • 写到硬盘( snapshot ) • snapshot 实现?双索引结构 – 防止数据丢失 • redo 日志 • 队列重放
  9. 9. 架构设计要点( cont. )• 库合并( merge ) – 减少库数量,提高性能 – 对内存库, snapshot 和 merge 可合一 – 一定规模拆分出历史库(准静态)• 历史库 – 按需合并 – 综合考虑:合并频率、库规模、访问量• 查询合并 – 遍历查询所有库的结果并合并 – 分布式情况下,每个库自带 1 级 searcher , 2 级 searcher 合并所有 1 级的结果
  10. 10. 实时搜索的难点• 快 + 动态,让很多事情变得复杂! – 架构、算法、运维、升级…… – 考验工程化水平• Ranking 算法 – 基本 TF/IDF – 时间因素 – 社会化信息调权• 信息 anti-spam – 文本特征过滤 – 社会化特征过滤 – 动态行为特征过滤
  11. 11. 实时搜索的难点( cont. )• 海量规模下 – 数据切分 • 时间 +URL – Hotspot 问题 • Cache • Replication – 索引数据更新 • 分词调整、信息删除 / 修改、库调整…… • 每库独立更新,错峰更新 • Cache warming
  12. 12. 实时搜索开源工具• Zoie – Lucene-based ,源自 LinkedIn – 提供了 solr plugin – 足以应对中小规模的搜索需求• Sphinx – 1.10-beta 开始支持实时搜索 – 应用于 craigslist 、 netlog
  13. 13. Thanks! Q&A

×