作为互联网应用中最具技术含量的应用之一,优秀的搜索引擎需要复杂的架构和算法,以此来支撑对海量数据的获取、存储,以及对用户查询的快速而准确地响应。这节主要介绍搜索引擎的整体架构和各个组成模块的功能。
从架构层面,搜索引擎需要能够对以百亿计的海量网页进行获取、存储、处理的能力,同时要保证搜索结果的质量。如何获取、存储并计算如此海量的数据?如何快速响应用户的查询?如何 使得搜索结果能够满足用户的信息需求?这些都是搜索引擎面对的技术挑战。
搜索引擎的信息源来自于互联网网页,通过网络爬虫将整个互联网的信息获得到本地,因为互联网页面中有相当大比例的内容是完全相同或者近似重复的,“网页去重”模块会对此做出检测,并去除重复内容。
在此之后,搜索引擎会网页进行解析,抽取出网页主体内容,以及页面中包含的指向其他页面的链接。为了加快响应用户查询的速度,网页内容通过“倒排索引”这种高效查询数据结构来保存,而网页之间的链接关系也会予以保存。之所以要保存链接关系,是因为这种关系在网页相关性排序阶段是可利用的,通过“链接分析”可以判断页面的相对重要性,对于为用户提供准确的搜索结果帮助很大。
由于网页数量太多,搜索引擎不仅需要保存网页原始信息,还是存储一些中间的处理结果,使用单台或者少量的机器明显是不现实的。
除了上述的子功能模块,搜索引擎的“反作弊”模块成为日益重要的功能。搜索引擎作为互联网用户的上网入口,对于网络流量的引导与分流到头重要,甚至可以说起了决定性的作用】于是,各种“作弊”方式逐渐流行,通过各种手段将网页的搜索排名提高到与其网页质量不相称的位置,这会严重影响用户的搜索体验。所以,如何自动发现作弊网页并对其处罚,成为搜索引擎非常重要的组成部分。