搜索引擎的原理,架构与细节

一、全网搜索引擎架构与流程

这里写图片描述
全网搜索引擎的宏观架构如上图,主要由核心系统和核心数据组成。
核心系统主要分为三部分(粉色部分):web

  1. spider爬虫系统;
  2. search&index创建索引与查询索引系统,这个系统又主要分为两部分:
    一部分用于生成索引数据build_index;
    一部分用于查询索引数据search_index。
  3. rank打分排序系统。算法

    核心数据主要分为两部分(紫色部分):
    一、 web网页库
    二、 Index索引数据架构


全网搜索引擎的业务特色决定了,这是一个“写入”和“检索”彻底分离的系统:
【写入】 ide

系统组成:由spider与search&index两个系统完成 
输入:站长们生成的互联网网页 
输出:正排倒排索引数据

流程:如架构图中的1234

 1. spider把互联网网页抓过来
 2. spider把互联网网页存储到网页库中(这个对存储的要求很高,要存储几乎整个“万维网”的镜像)
 3. build_index从网页库中读取数据,完成分词;
 4. build_index生成倒排索引。

【检索】 svg

系统组成:由search&index与rank两个系统完成 
输入:用户的搜索词 
输出:排好序的第一页检索结果
流程:如架构图中的a,b,c,d

search_index得到用户的搜索词,完成分词;
search_index查询倒排索引,得到“字符匹配”网页,这是初筛的结果;
rank对初筛的结果进行打分排序;
rank对排序后的第一页结果返回。

二、站内搜索引擎架构与流程

这里写图片描述

站内搜索引擎的宏观架构如上图,与全网搜索引擎的宏观架构相比,差别只有写入的地方:优化

全网搜索须要spider要被动去抓取数据;
站内搜索的数据是内部系统生成的,例如“发布系统”会将生成的帖子主动推给build_data系统。
看似“很小”的差别,架构实现上难度却差不少:ui

全网搜索如何“实时”发现“全量”的网页是很是困难的,而站内搜索容易实时获得所有数据。

对于spider、search&index、rank三个系统:搜索引擎

  • spider和search&index是相对独立的系统;spa

  • rank是和业务、策略紧密、算法相关的系统,搜索体验的差别主要在此,而业务、策略的优化是须要时间积累的.net

参考文章请点击:
搜索系统—搜索引擎的原理,架构与细节