这个系列的第六个主题,主要谈一些搜索引擎相关的常见技术。
1995年是搜索引擎商业公司发展的重要起点,《浅谈推荐系统基础》中也讲过,随着互联网上的Web站点数量越来越多,分类目录网站已经不能满足用户的需求,用户也无法依赖手工的方式来获得自己想要的信息,在这样的背景下,搜索引擎发展了起来。
有人将搜索引擎分为三个时代:
- 文本检索:采用经典的信息检索模型,如布尔模型、向量空间模型或概率模型来计算用户查询关键词和网页文本内容的相关程度。
- 链接分析:充分利用了网页之间的链接关系,认为网页链接代表了一种推荐关系,深入挖掘和利用了网页链接所代表的含义。
- 用户中心:以理解用户需求为核心,致力于解决如何能够理解用户发出的某个很短小的查询词背后所包含的真正需求。
搜索引擎的三个目标:
- 更全:索引网页更全
- 更快:查询速度更快
- 更准:搜索结果更准
让搜索结果更准的三个核心问题:
- 用户真正的需求是什么
- 哪些信息是和用户需求真正相关的
- 哪些信息是用户可以信赖的
从架构层面,搜索引擎主要需要解决两方面的问题:一个是搜索引擎需要获取、存储并处理以百亿计的海量网页;另一个是快速响应用户的查询,并精确满足用户的需求。
搜索引擎通过爬虫将整个互联网的信息获取到本地,通过网页去重模块去除其中相当大比例的完全相同或近似重复的内容。
在此之后,搜索引擎对网页进行解析,抽取出网页主体内容,以及页面中包含的指向其他页面的链接。网页主体内容特别的通过倒排索引结构来保存,保存页面链接关系是为网页相关性\重要性排序做准备。
由于网页数量提多,搜索引擎不仅需要保存网页原始信息,还要存储一些中间的处理结果,使用单台或者少量的机器明显是不现实的,所以需要优秀的云存储与云计算平台,使用数以万计的PC搭建了海量信息的可靠存储与计算架构。
当搜索引擎接收到用户的查询词后,首先需要对查询词进行分析,希望能结合查询词和用户信息来正确推导用户的真正搜索意图。在此之后,优先在缓存中查找,搜索引擎的缓存系统存储了不同的查询意图对应的搜索结果。如果缓存信息无法满足用户需求,搜索引擎需要调用网页排序模块,根据用户的查询实时计算哪些网页是满足用户信息需求的,并排序输出作为搜索结果。