zoukankan      html  css  js  c++  java
  • 搜索引擎学习-实现

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

    搜索引擎组成

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

    离线计算和在线计算

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

    架构思想

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

    结构图

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

    该图显示了在线检索系统的架构图,实际中每个节点都是分布式部署的多份服务,数据会进行垂直/水平的拆分,服务会进行分组。
    各节点功能的介绍不再详述了,以免涉密,读者自行想象。
  • 相关阅读:
    MySQL练习题
    InnoDB存储引擎+显示数据库引擎
    EMP+DEPT+SALGRADE 表的基本操作2
    EMP+DEPT+SALGRADE 表的基本操作1
    Git的使用
    JavaScript动画实例:旋转的正三角形
    JavaScript动画实例:曲线的绘制
    JavaScript动画实例:螺旋线
    JavaScript图形实例:阿基米德螺线
    JavaScript图形实例:平面镶嵌图案
  • 原文地址:https://www.cnblogs.com/whuqin/p/4981990.html
Copyright © 2011-2022 走看看