全网搜索引擎的宏观架构如上图,主要由核心系统和核心数据组成。
核心系统主要分为三部分(粉色部分):web
rank打分排序系统。算法
核心数据主要分为两部分(紫色部分):
一、 web网页库
二、 Index索引数据架构
全网搜索引擎的业务特色决定了,这是一个“写入”和“检索”彻底分离的系统:
【写入】 ide
系统组成:由spider与search&index两个系统完成
输入:站长们生成的互联网网页
输出:正排倒排索引数据
流程:如架构图中的1,2,3,4
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
参考文章请点击:
搜索系统—搜索引擎的原理,架构与细节