搜索引擎学习-实现

上篇文章介绍了搜索引擎的基本概念,有了大致的认识,本文说下搜索引擎实现上的一些问题。

搜索引擎组成

  • 抓取系统:负责对互联网信息的搜集,将网页保存到本地,供下游分析、挖掘、建索引使用
  • 分析系统:分析query,查询排序
  • 索引系统:整理资源,提取特征
  • 检索系统:用户query查找,结果展现

离线计算和在线计算

为了确保搜索引擎的响应时间和结果质量,在实现上,搜索引擎分为离线计算和在线计算。
离线计算进行数据存储、分析、索引;在线计算负责请求响应、检索匹配、结果展现。
离线计算:
  • 信息过滤、索引分层:根据网页特征和用户行为,减少需要被检索的网页数量
  • 反链和pagerank计算:根据网页链接关系,计算排序所需要的网页特征
  • 用户行为挖掘:根据用户点击、会话记录,将用户行为反馈到线上结果
  • 建库:存储海量网页内容,提取网页特征,设计高效检索的索引(倒排索引、MapReduce)
在线计算:
  • 高并发低延迟的分布式系统
  • 吞吐量高
  • 稳定性强
  • 开发运维效率快
  • 实现上涉及到服务数据的分层和冗余,请求的调度,数据的缓存

架构思想

搜索引擎的架构适用于高并发、大数据、低延迟等类似系统,对其有借鉴意义。
  • 基本方针:分而治之
  • 具体实现:分布式计算
  • 系统结构:服务分层、逐层汇聚
  • 业务管理:按相关性,进行系统分组

结构图

为了不涉及泄密,该图尽量简化抽象。

该图显示了在线检索系统的架构图,实际中每个节点都是分布式部署的多份服务,数据会进行垂直/水平的拆分,服务会进行分组。
各节点功能的介绍不再详述了,以免涉密,读者自行想象。

 

posted @ 2014-04-04 15:29  春文秋武  阅读(337)  评论(0编辑  收藏  举报