搜索引擎是指根据一定的算法策略、运用特定的计算机程序和通信规则从浩如烟海的互联网内容(主要是网页内容)中搜索信息,经过处理和加工后以特定的形式展现给用户,通常在用户输入检索内容后进行工作。搜索引擎是运行在互联网上的一种高效的检索工具,它旨在提高用户获取信息的速度,使互联网作为数据存储平台,更好地被用户使用。
搜索引擎发展到今天,其基础架构和算法在技术上都已经基本成型和成熟,已经发展成为根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索的相关信息展示给用户的系统。
从发展历程来看,搜索引擎大致经历了以下几个发展阶段。
(1)第一代搜索引擎:搜索引擎(Search Engine,SE)的出现起源于20世纪初期加拿大蒙特利尔市的麦吉尔大学,当时还没有万维网(World Wide Web,WWW),主要依靠文件传输协议(File Transfer Protocol,FTP)软件进行文件的共享,因此必须在内网上架设FTP服务器。同时,为了检测FTP数据,还必须有FTP客户端,那时候很多数据都是零散分布的,麦吉尔大学计算机学院的三名学生Emtage、Deutsch、Wheelan为了能够快速准确地查找到FTP服务器上文件的位置,制作了一个可以通过文件名对文件位置进行查询的系统Archie,该系统可以帮助用户在互联网上查找到指定的FTP文件的相关信息。对于当时的情况来说,这已经是最先进的搜索技术了,尽管在搜索的过程中,Archie需要用户提供准确文件名称才能对文件进行定位,但不可否认的是,它的出现开启了自动搜索网络信息资源的时代。毫无疑问,Archie成了搜索引擎的鼻祖 [4] 。
(2)第二代搜索引擎:第二代搜索引擎,同时也是第一代真正基于互联网的搜索引擎Lycos诞生于1994年,它以人工分类目录为主,代表厂商是Yahoo,特点是人工分类存放网站的各种目录,用户通过多种方式寻找网站,现在也还有这种方式存在。Lycos最早出现在Mauldin博士在卡内基梅隆大学的一个搜索项目,当时的Lycos搜索引擎被用于该校的数字图书馆工程。“Lycos”是Lycosidae(一种很善于捕捉猎物的狼蛛)的缩写。Infoseek也是同时期的重要代表,它们是搜索引擎史上的重要代表 [5] 。
(3)第三代搜索引擎:随着网络应用技术的发展,利用关键字来查询的主动搜索式引擎,开始替代原先只能沿着分类目录进行浏览的第二代搜索引擎,这种搜索引擎最具代表性、最成功的是早期的Google搜索引擎,它建立在网页链接分析技术的基础上,对数据端的内容进行了大量的分析和重构,使用关键字对网页搜索,能够覆盖互联网的大量网页内容,该技术可以在分析网页的重要性后将重要的结果呈现给用户。Google搜索引擎是由两名斯坦福大学的理学博士Page和Brin在1996年早期建立的,他们开发了一个可以对网站之间的关系做精确分析的搜索引擎,此搜索引擎的精确度胜于当时使用的基本搜索技术。当时的项目被称作BackRub,因为系统会检查反向链接(BackLinks),以评估站点的重要性。目前,Google搜索引擎每天需要处理超过2亿次的搜索请求,数据库存有30亿个互联网站点文件。
(4)第四代搜索引擎:随着网络信息的迅速膨胀,为了充分理解用户提出的检索需求与搜索引擎所能提供的知识服务内容之间的相关性,以便更加迅速、更加准确地响应用户的检索需求,语义搜索引擎诞生。相比第三代搜索引擎直接建立用户检索关键词与搜索引擎提供的网页内容之间的关系并在此基础上提供服务,第四代搜索引擎在用户端的需求分析功能上实施了更多的优化,更加注重对用户检索内容的个性化、专业化、智能化分析,在这个过程中广泛使用自动聚类、分类、区域智能识别及内容分析技术,在某些特定的环节进行人工介入,增强了搜索引擎的查询能力。第四代搜索引擎的代表是目前的Google、百度搜索等。
搜索方式是搜索引擎的一个关键环节,大致可分为四种:全文搜索引擎、元搜索引擎、垂直搜索引擎和目录搜索引擎,它们各有特点并适用于不同的搜索环境。所以,灵活选用搜索方式是提高搜索引擎性能的重要途径。
(1)全文搜索引擎:一般网络用户适用于全文搜索引擎。这种搜索方式方便、简捷,并容易获得所有相关信息。但搜索到的信息过于庞杂,因此用户需要逐一浏览并甄别出所需信息。尤其在用户没有明确检索意图的情况下,这种搜索方式非常有效。
(2)元搜索引擎:元搜索引擎适用于广泛、准确地收集信息。不同的全文搜索引擎由于其性能和信息反馈能力的差异,导致其各有利弊。元搜索引擎的出现恰恰解决了这个问题,有利于各基本搜索引擎间的优势互补。元搜索引擎有利于对基本搜索方式进行全局控制,引导全文搜索引擎的持续改善。
(3)垂直搜索引擎:垂直搜索引擎适用于在有明确搜索意图的情况下进行检索。例如,用户在购买机票、火车票、汽车票时,或想要浏览网络视频资源时,都可以直接选用行业内专用搜索引擎,以准确、迅速获得相关信息。
(4)目录搜索引擎:目录搜索引擎是网站内部常用的检索方式,旨在对网站内信息进行整合处理并以目录的形式呈现给用户,但其缺点在于用户需预先了解本网站的内容,并熟悉其主要模块构成。综而观之,目录搜索方式的适用范围非常有限,且需要较高的人工成本来支持维护 [6] 。
四种搜索引擎的比较如表1.1所示 [6] 。
表1.1 四种搜索引擎的比较
在设计和实现搜索引擎时,涉及的关键技术如下 [7] 。
网上信息收集和存储一般分为人工和自动两种方式。人工方式采用传统信息收集、分类、存储、组织和检索的方法,由相关人员对网站进行调查、筛选、分类、存储并手动建立关键字索引,再将索引信息存入计算机相应的数据库中。自动方式通常是由网络机器人来完成的,这种网络机器人是一种自动运行的软件,其功能是搜索互联网上的网站和网页,其定期在互联网上漫游,通过网页间链接依次搜索新的地址,当遇到新的网页时,就给该网页上的某些字或全部字做上索引并把它们加入搜索引擎的数据库中,从而使搜索引擎的数据库得以定期更新。一般来说,人工方式收集信息的准确性要远优于网络机器人,但其收集信息的效率及全面性低于网络机器人。
信息预处理包括信息格式支持与转换及信息过滤。目前互联网上的信息发布格式多种多样,这就要求搜索引擎支持多种文件格式。从实际情况来看,所有的搜索引擎都支持超文本标记语言(Hyper Text Markup Language,HTML)格式,而对于其他文件格式的支持,不同的搜索引擎有不同的规定,最多的能支持200多种文件格式。一般来说,一个企业级的公用互联网网页站点起码应该支持40~60种文件格式。同时搜索引擎还应具备信息格式转换功能,以保证不同格式的数据均能在网络中流通。信息过滤也是搜索引擎的一项重要技术,面对存在于互联网中的大量的无用信息,一个好的搜索引擎应当尽量减少垃圾站点的数量,这是信息过滤要着重解决的问题。
信息索引就是创建文档信息的特征记录,以使用户能够快速地检索到所需信息。建立索引主要涉及以下几个问题。
(1)信息语词切分和语词词法分析。语词是信息表达的最小单位,由于语词切分中存在切分歧义,因此切分需要充分利用各种上下文知识。语词词法分析是指识别出各个语词的词干,以便根据词干建立信息索引。
(2)词性标注及相关的自然语言处理。词性标注是指利用基于规则和统计(马尔可夫链)的科学方法对语词进行标注,基于马尔可夫链随机过程的 n 元语法统计分析方法在词性标注中能达到较高的精度,可利用多种语法规则识别出重要的短语结构。自然语言处理运用计算机对自然语言进行分析和理解,从而使计算机在某种程度上具有人的语言能力。将自然语言处理应用在信息检索中,可以提高信息检索的精度和相关性。
(3)建立检索项索引。使用倒排文件的方式建立检索项索引,一般包括“检索项”“检索项所在文件位置信息”“检索项权重”。
(4)检索结果处理技术。搜索引擎的检索结果通常包含大量文件,用户不可能一一浏览。搜索引擎一般应按与查询内容的相关程度对检索结果进行排列,最相关的文件通常放在最前面。搜索引擎确定相关性的方法有概率方法、位置方法、摘要方法、分类或聚类方法等。
普通用户使用的最多的主流搜索引擎,是全文搜索引擎,这种搜索引擎的体系结构主要由搜索器、索引器、检索器和用户接口构成。
搜索引擎体系结构中的搜索器(Spider)俗称网络蜘蛛或网络爬虫,是一个自动收集网页的系统程序,其功能是日夜不停地在互联网中漫游,搜集信息,不仅要尽可能多、尽可能快地搜集各种类型的新信息,还要定期更新已经搜索过的旧信息,以避免出现死链接 [8] 。
目前有两种搜集信息的策略,通常需要根据各国的具体网络政策和网络结构,对二者进行结合使用。①从一个统一资源定位器(Uniform Resource Locator,URL)开始,顺着这些URL中的超链接(Hyperlink),以广度优先、深度优先或启发式的方式的循环在互联网中发现信息。起始URL主要基于一些非常流行、包含很多链接的站点。②将网页空间按照域名、IP地址或国家划分,每个搜索器负责一个子空间的穷尽搜索 [8,9] 。
搜索器将过滤掉搜索到的每个文档格式符,提取文本数据Fulltext,每个文档对应着一个Fulltext文件,内容包括网页标题、网页的URL、大小、时间、类型、分类等属性及文本内容,所有生成的这些文件交给索引器进行索引处理,其实现常用分布式并行计算技术,以提高信息发现和更新的速度,这种对网页内容的提取,一直是搜索器的重要技术之一,整个系统一般采用插件的形式,通过一个插件管理服务程序,遇到不同格式的网页采用不同的插件进行处理。由于网站的内容经常在变化,因此搜索器也必须不断地更新其抓取到的网页内容,这就需要搜索器按照一定的周期去扫描网站,查找哪些页面是需要更新的页面,哪些页面是新增页面,哪些页面是已经过期的死链接 [9] 。
搜索引擎体系结构中的索引器(Indexer)的功能是理解搜索器所搜索的信息,由分析索引系统程序对搜集到的网页进行分析,提取网页信息(包括网页所在URL、编码类型、页面内容包含的关键词、关键词位置、生成时间、大小、与其他网页的链接关系等),根据一定的相关度算法进行大量复杂计算,得到每一个网页针对页面内容中及超链接中每一个关键词的相关度(或重要性),根据这些相关信息建立网页索引数据库 [8] 。
索引器的工作过程:索引器读入搜索器生成的Fulltext文件,采用基于位置倒排索引与三级 n 元索引相结合的索引机制。首先进行分词处理生成索引项,并作归类排序,生成Index文件和inv文件,inv文件为倒排表(Inversion List),即由索引项查找相对应的文档,Index文件形成“分词-倒排表”对应关系,内容为分词在倒排表中相应的文档块起始地址、含有该词的文档数量等信息 [9] 。
索引器可以使用集中式索引算法或分布式索引算法。当数据量很大时,必须实现即时索引,否则不能跟上信息量急剧增加的速度,这种索引对索引器的性能(如大规模峰值查询时的响应速度)有很大的影响。一个搜索引擎的有效性在很大程度上取决于索引器的质量 [9] 。
索引项有客观索引项和内容索引项两种:客观索引项与文档的语义内容无关,如作者名、URL、更新时间、编码、长度、链接流行度(Link Popularity)等;内容索引项是用来反映文档内容的,如关键词及其权重、短语、单字等。内容索引项可以分为单索引项和多索引项(短语索引项)两种,单索引项对于英文来讲是英语单词,比较容易提取,因为单词之间有天然的分隔符(空格),而对于中文等连续书写的语言,必须进行语言的词法分析(分词) [9] 。
词法分析是指对自然语言的形态进行分析,判定词的结构、类别和性质。对于以英文为代表的形态丰富的语言来说,英文词法分析的一个重要过程是形态分析,即将英文词还原成词干。而汉语形态变化很少,其主要的问题在于书写时,词与词之间没有空格,所以通常中文词法分析的关键是分词,分词往往是后续进一步处理的基础 [9] 。
搜索引擎体系结构中的检索器(Searcher)的功能是针对用户的查询请求在索引库中快速检出文档,采用一定的信息检索模型进行文档与查询的相关度评价,对将要输出的结果进行排序、聚类等操作,并实现某用户相关性反馈机制。信息检索模型有布尔逻辑模型、模糊逻辑模型、向量空间模型、概率模型及混合模型等 [8] 。
检索器的工作过程:检索器对用户接口(User Interface,UI)提出的查询要求进行递归分析,在UI中一般采用基本语法来组织要检索的条件。检索器通常支持多种语法规则,如逻辑操作符AND、OR、NOT,使用“+、-”连接号和通配符,使用逗号、括号或引号进行词组查找。对于每个索引项,匹配Index文件,查到倒排表(inv文件)中包含该索引项的文档,并对所有查找出的文档进行集合运算,将结果集按照基于内容和基于链接分析的方法进行相关度评价并排序,最大限度地保证检索出的结果与用户的查询串有很高的相关性,将最终形成的有序文档结果集合返回给用户 [9] 。
用户接口的作用是接收用户的查询,显示查询结果,提供用户相关性反馈机制。用户接口的主要目的是方便用户使用搜索引擎,高效率、多方式地从搜索引擎中得到有效、及时的信息。用户接口的设计和实现使用人机交互的理论和方法,以充分适应人类的思维习惯 [8] 。
用户输入接口可以分为简单接口和复杂接口两种。简单接口只提供用户输入查询串的文本框;复杂接口可以让用户对查询进行限制,如逻辑运算(与、或、+、-)、相近关系(相邻、near)、域名范围(edu.com)、出现位置(标题、内容)、信息时间、长度等。
当互联网用户通过用户接口提交查询时,检索器首先根据用户输入的查询关键词,在已由索引器完成索引和初排序的存储桶(Barrel)中进行查找;然后采用特定的页面优先度算法对其结果进行最终排序,使之尽可能符合用户查询需求;最后由UI将最终查询结果呈现给互联网用户 [9] 。
从整体上看,搜索引擎的工作原理可以分为三步。
(1)从互联网上抓取网页:利用能够从互联网上自动收集网页的Spider系统程序,自动访问互联网,并沿着任何网页中的所有URL爬到其他网页,重复这个过程,并把爬过的所有网页搜集回来。
(2)建立索引数据库:由分析索引系统程序对搜集到的网页进行分析,提取相关网页信息,根据一定的相关度算法进行大量复杂计算,得到每一个网页针对页面内容中及超链接中每一个关键词的相关度或重要性,利用这些相关信息建立网页索引数据库。
(3)在索引数据库中搜索排序:当用户输入关键词后,首先由搜索系统程序从网页索引数据库中找到符合该关键词的所有相关网页。因为所有相关网页针对该关键词的相关度早已算好,所以只需要按照现成的相关度数值排序即可,相关度越高,网站排名越靠前。然后由页面生成系统将搜索结果的链接地址和页面内容摘要等内容组织起来返回给用户。
搜索引擎的主要体系结构和功能流程如图1.3所示。
图1.3 搜索引擎的主要体系结构和功能流程
当前互联网上代表性的搜索引擎如表1.2所示,表中介绍了各个搜索引擎的名称和特点。
表1.2 当前互联网上代表性的搜索引擎 [10,11]