中文搜索引擎技术揭密:系统架构 |
互联网发展的今天,一方面离 不开其开放、共享的特性带给人们的全新体验,另一方面也离不开数以亿计的为其提供各类丰富内容的网络节点。互联网被普及前,人们查阅资料第一想到的便是拥 有大量书籍资料的图书馆,到了今天你怎么想?或许今天的很多人都会选择一种更方便、快捷、全面、准确的方式——互联网。你可以坐在家里轻点几下鼠标就查到 想要的各类信息,这在互联网没有被普及之前,还都仅是一个梦而已,但如今这一切已成为了可能。 而帮助你通过整个互联网快速查找到目标信息的就是越来越被重视的搜索引擎。有关搜索引擎的技术资料网络上已经很多,关于搜索引擎经济的多方面报道各大媒体 也都已经铺天盖地,因此在这里小编并不想过多的谈论这些方面的感受,只想在本次“中文搜索引擎技术揭密”系列文章全部完成之际来聊一下搜索引擎对小编的深 远影响。 记得2000年左右网络上开始大量出现免费个人主页空间,当时的小编还只是一个刚刚进入IT圈的小朋友,看着这些空间那叫一个口水横流,于是乎立刻申请了 一个。又经过了一个多月的刻苦修炼和先后三次的改版,自己有生以来的第一个个人主页诞生了。可看着每天寥寥无几的访问量,心里那叫一个难受,可一时间也想 不到好办法解决问题。突然有天发现一篇介绍如何在搜索引擎注册自己个人网站的文章,于是小编就照着文章所讲的分别在SOHU、网易等搜索引擎的相关分类目 录下注册了自己的个人主页。直至今日,小编才确切的知道了当时盛行的搜索引擎都属“目录搜索引擎”。这实际上是小编第一次使用、认识搜索引擎,再后来通过 每天个人主页不断上升的数字小编感觉到了搜索引擎的神奇。 其实正是由于搜索引擎,才使小编的个人主页被更多的人所熟识,以至于后来有多份工作都是因为这个个人主页所带来的机会。其实这些经历或许很多人都有切身的 体会,同样也有很多人因此去全身投入到互联网工作中。这正像那句话讲的“世界真奇妙,不看不知道”,小编在此多加一句“到底怎么看,搜索引擎帮你忙!”
前言互 联网在近10年的得到飞速发展,互联网正在逐渐深入人们的生活,改变人们的生活。互联网经济也经历了风风雨雨,从缓慢起步到急速膨胀,从泡沫破灭到逐步回 暖;从“网络广告”到“拇指经济”,从“网络游戏”到“搜索力经济”。目前,搜索引擎成为最受人们关注的焦点之一,也成为亿万富翁的制造摇篮。越来越多的 公司都希望在搜索引擎这座金矿中挖到筐金子,其中许多人会选择拥有自己的搜索引擎。国内著名搜索引擎公司百度(http://www.baidu.com)总裁李彦宏说:搜索引擎不是人人都能做的领域,进入的门槛比较高。 搜索引擎的门槛到底有多高?搜索引擎的门槛主要是技术门槛,包括网页数据的快速采集、海量数据的索引和存储、搜索结果的相关性排序、搜索效率的毫秒级要 求、分布式处理和负载均衡、自然语言的理解技术等等,这些都是搜索引擎的门槛。对于一个复杂的系统来说,各方面的技术固然重要,但整个系统的架构设计也同 样不可忽视,搜索引擎也不例外。
搜索引擎技术和分类搜索引擎的技术基础是全文检索技术,从20世纪60年代,国外对全文检索技术就开始有研究。全文检索通常指文本全文检索,包括信息的存储、组织、表现、查 询、存取等各个方面,其核心为文本信息的索引和检索,一般用于企事业单位。随着互联网信息的发展,搜索引擎在全文检索技术上逐渐发展起来,并得到广泛的应 用,但搜索引擎还是不同于全文检索。搜索引擎和常规意义上的全文检索主要区别有以下几点:
搜索引擎与全文检索除了以上的区别外,还结合互联网信息的特点形成了三个不同的类型:
搜索引擎的系统架构这里主要针对全文检索搜索引擎的系统架构进行说明,下文中提到的搜索引擎如果没有特殊说明也是指全文检索搜索引擎。搜索引擎的实现原理,可以看作四步:从互联网上抓取网页→建立索引数据库→在索引数据库中搜索→对搜索结果进行处理和排序。
“网络蜘蛛”从互联网上抓取网页,把网页送入“网页数据库”,从网页中“提取URL”,把URL送入“URL数据库”,“蜘蛛控制”得到网页的URL,控制“网络蜘蛛”抓取其它网页,反复循环直到把所有的网页抓取完成。 系统从“网页数据库”中得到文本信息,送入“文本索引”模块建立索引,形成“索引数据库”。同时进行“链接信息提取”,把链接信息(包括锚文本、链接本身等信息)送入“链接数据库”,为“网页评级”提供依据。 “用户”通过提交查询请求给“查询服务器”,服务器在“索引数据库”中进行相关网页的查找,同时“网页评级”把查询请求和链接信息结合起来对搜索结果进行相关度的评价,通过“查询服务器”按照相关度进行排序,并提取关键词的内容摘要,组织最后的页面返回给“用户”。
搜索引擎的索引和搜索对于网络蜘蛛技术和排序技术请参考作者其它文章[1][2],这里以Google搜索引擎为例主要介绍搜索引擎的数据索引和搜索过程。 数据的索引分为三个步骤:网页内容的提取、词的识别、标引库的建立。 互联网上大部分信息都是以HTML格式存在,对于索引来说,只处理文本信息。因此需要把网页中文本内容提取出来,过滤掉一些脚本标示符和一些无用的广告信 息,同时记录文本的版面格式信息[1]。词的识别是搜索引擎中非常关键的一部分,通过字典文件对网页内的词进行识别。对于西文信息来说,需要识别词的不同 形式,例如:单复数、过去式、组合词、词根等,对于一些亚洲语言(中文、日文、韩文等)需要进行分词处理[3]。识别出网页中的每个词,并分配唯一的wordID号,用于为数据索引中的标引模块服务。 标引库的建立是数据索引中结构最复杂的一部分。一般需要建立两种标引:文档标引和关键词标引。 文档标引分配每个网页一个唯一的docID号,根据docID标引出在这个网页中出现过多少过wordID,每个wordID出现的次数、位置、大小写格 式等,形成docID对应wordID的数据列表;关键词标引其实是对文档标引的逆标引,根据wordID标引出这个词出现在那些网页(用wordID表 示),出现在每个网页的次数、位置、大小写格式等,形成wordID对应docID的列表。 关于索引数据的详细数据结构,有兴趣的朋友可以参看文献[4]。 搜索的处理过程是对用户的搜索请求进行满足的过程,通过用户输入搜索关键字,搜索服务器对应关键词字典,把搜索关键词转化为wordID,然后在标引库中 得到docID列表,对docID列表进行扫描和wordID的匹配,提取满足条件的网页,然后计算网页和关键词的相关度,根据相关度的数值返回前K篇结 果(不同的搜索引擎每页的搜索结果数不同)返回给用户。如果用户查看的第二页或者第多少页,重新进行搜索,把排序结果中在第K+1到2*K的网页组织返回 给用户。其处理流程如下图所示:
搜索引擎细化趋势随着搜索引擎市场空间越来越大,搜索引擎也分得越来越细。互联网没有国界,百度总裁李彦宏所讲:搜索引擎市场是赢家通吃的市场。如果一个搜索引擎要想在搜 索市场上有自己的一席之地,必须拥有自己的特色。而且,数以亿计的网民,搜索需求不可能都一样,不同类型的用户需要不同类型的搜索引擎,网页搜索只是搜索 需求中的一种,这就决定了搜索引擎会不断细化,各具特色的搜索引擎也陆续出现。 从技术上讲,各种搜索引擎都具有类似的系统架构,其不同在于搜索的数据源的不同。除了上面提到的网页搜索引擎以外,下面列举几个典型的搜索引擎:
|