首页 > 代码库 > 搜索引擎的基本工作原理
搜索引擎的基本工作原理
了解搜索引擎的基本工作原理
1.搜索引擎的概念
在浩瀚的网络资源中,搜素引擎(Search Engine)是一种网上信息检索工具,它能帮助用户迅速而全面地找到所需要的信息。我们这样对搜索引擎进行定义:搜索引擎是一种能够通过因特网接受用户的查询命令,并向用户提供符合其查询要求的信息资源网址的系统。据统计,搜索引擎搜索仅次于电子邮件的应用。目前网上比较有影响的中文搜索工具有:google、百度、北大天网、爱问(iask)、雅虎(yahoo!)、搜狗(sogou)、搜搜(soso)等搜索引擎。英文的有:Yahoo! 、AltaVista、Excite、Infoseek、Lycos、Aol等。另外还有专用搜索引擎,例如专门搜索歌曲和音乐的;专门搜索电子邮件地址、电话与地址及公众信息的;专门搜索各种文件的FTP搜索引擎等。
搜索引擎是指根据一定的策略,运用特定的计算机程序搜集互联网上的信息,在对信息进行组织和处理后,为用户提供检索服务的系统。搜索引擎并不是真正的互联网,它搜索的实际上是预先整理好的网页索引数据库。真正意义上的搜索引擎,通常指的是收集了互联网上几千万到几十亿个网页并对我那个也中的每一个词(即关键词)进行索引。建立索引数据库的全文搜索引擎。现在的搜索引擎已普遍使用超链分析技术,除了分析索引网页本身的内容,还分析索引所有指向该网页的链接的URL、Anchor、Text,甚至链接周围的文字。所以,有时候,即使某个网页A中并没有出现某个词,比如
“信息检索”,但如果有网页B用链接“信息检索”指向这个网页A,那么用户搜索“信息检索”时也能找到网页A。而且,如果有越多的网页的“信息检索”链接指向网页A,那么网页A在用户搜索“信息检索”时也会被认为更相关,排序也会越靠前。
搜索引擎的原理,可以分为四步:从互联网上抓取网页、建立索引数据库、在索引数据库中搜索排序、对搜索结果进行处理和排序。
(1)、从互联网上抓取网页:利用能够从互联网上自动收集网页的蜘蛛系统程序,自动访问互联网,并沿着任何网页中所有URL爬到其他网页,重复这个过程,并把爬过的所有网页收集回来。
(2)、建立索引数据库:由分析索引系统程序对收集回来的网页进行分析,提取相关网页信息(包括网页所在URL、编码类型、页面内容包含的关键词、关键词位置、生成时间、大小、与其他网页的链接关系等),并根据一定的相关度算法进行大量的复杂计算,得到每一个网页针对页面内容中及超链中每一个关键词的相关度(或重要性),然后利用这些相关信息建立网页索引数据库。
(3)、在索引数据库中搜索排序:当用户输入关键词后,由搜索系统程序从网页索引数据库中找到符合该关键词的所有相关网页。因为所用相关网页针对该关键词的相关度早已计算好,所以只需按照现成的相关数值排序,相关度越高,排名越靠前。最后由页面生成系统将搜索结果的链接地址和页面内容摘要等内容组织起来返回给用户。
(4)、对搜索结果进行处理排序:所有相关网页针对该关键词的相关信息在索引库中都有记录,只需综合相关信息和网页级别形成相关数值度,然后进行排序,相关度越高,排名越靠前。最后由页面生成系统将搜索结果的链接地址和页面内容摘要等内容组织起来返回给用户。
搜索引擎的分类
搜索引擎的技术基础是全文检索技术。全文检索通常指文本全文检索,包括信息的储存、组织、表现、查询、存取等各个方面,其核心为文本信息的索引和检索,一般用于企事业单位。随着互联网信息的发展,搜索引擎在全文检索技术上逐渐发展起来,并得到广泛的应用,但搜索引擎还是不同于全文检索。搜索引擎和常规意义上的全文检索主要区别有以下几点。
(1)、数据量。
传统全文检索系统面向的是企业本身的数据或者和企业相关的数据,一般索引数据库的规模多在GB级,数据量大的也只有几百万条;但互联网网页搜索需要处理几十亿的网页,搜索引擎的策略都是采用服务器群集和分布式据算技术。
(2)、内容相关性。
信息太多,差准和排序就是特别重要,Google等搜索引擎采用网页链接分析技术,根据互联网上网页被链接的次数作为重要性评判的依据;但全文检索的数据源中相互链接的程度并不高,不能作为判别重要性的依据,只能基于内容的相关性排序。
(3)、安全性。
互联网信息是公开的,除了文本内容外,其他信息都不太重要;而企业全文检索的数据源都是企业内部的信息,有等级、权限等限制,对查询方式也有更严格的要求,因此其数据一般会安全和集中地存放在数据库仓库中以保证数据安全和管理的要求。
(4)、个性化和智能化。
搜索引擎面向的是互联网的访问者,由于其数据量和客户数量的限制,自然语言处理技术、知识检索、知识挖掘等计算密集的智能计算技术很难应用,这也是目前搜索引擎技术努力的方向。而全文检索数据量小,检索需求明确,客户量少,在智能化和个性上更具有优势。
除了与全文检索系统有上述区别之外,搜索引擎按其工作方式主要可以分为3种,分别是全文搜索引擎(Full Text Search Engine)、目录索引类(Search Index/Directory)和元搜索引擎(Meta Search Engine)。
一、全文搜索引擎。
全文搜索引擎是名副其实的搜索引擎(google、AllTheWeb、AltaVista、Inktomi、Teoma、WiseNut、百度、中文搜索、北大天网等),他们都是通过从互联网上提取的各个网站的信息(以网页文字为主)而建立的数据库中,检索与用户查询条件匹配的相关记录,然后按一定的排列顺序将结果返回给用户,因此它们是真正的的搜索引擎。从搜索结果来源的角度,全文搜索引擎又可以细分为两种:一种是拥有自己的检索程序,俗称机器人程序或蜘蛛程序,并自建网页数据库,搜索结果直接从自身的数据库中调用,如上面提到的搜索引擎;另一种则是租用其他引擎的数据库,并按自定的格式排列搜索结果,如Lycos引擎。
全文搜索引擎有全文搜索、检索功能强、信息更新速度快等优点。但同时也有其不足之处,提供的信息虽然多而全,但可供选择的信息太多反而降低相应的命中率,并且提供的查询结果重复链接较多,层次结构不清晰,给人一种繁多杂乱的感觉。
二、目录索引类搜索引擎。
目录索引虽然有搜索功能,但在严格意义上算不上是真正的搜索引擎,仅仅是按目录分类的网站链接列表而已。用户完全可以不用进行关键词(keywords)查询,仅靠分类目录也可找到需要的信息。目录索引中最具代表性的莫过于大名鼎鼎的Yahoo!,其他的还有Open Directory Project(DMOZ)、LookSmart、About等。国内的搜狐、新浪、网易搜索也都属于这一类。
目录索引与全文搜索引擎的区别在于它是由人工建立的,通过“人工方式”将站点进行了分类,不像全文搜索引擎那样,将网站上的所有文中和信息都收录进去,而是首先将该网站划分到某个分类下,再记录一些摘要信息,对该网站进行概述性的简要介绍,用户提出搜索要求时,搜索引擎只在网站的简介中搜索。它的主要优点有:层次、结构清晰、易于查找;多级类目,便于查询到具体明确的主题;在内容提要、分类目录下有简明扼要的内容,方便使用户一目了然。其缺点是搜索范围较小、更新速度慢、查询交叉类目时容易遗漏。
三、元搜索引擎。
元搜索引擎在接受用户查询请求时,同时在其他多个搜索引擎上进行搜索,并将结果返回给用户。著名的元搜索引擎有InfoSpace、 Dogpile、Vivisimo等,中文元搜索引擎中具代表性的有北斗搜索。在搜索结果排列方面,有的直接按来源搜索引擎排列搜索结果,如 Dogpile,有的则按自定的规则将结果重新排列组合,如Vivisimo。
除上述三大类搜索引擎外,还有以下集中非主流形式。
(1)、集合式搜索引擎:如HotBot在2002年底推出的引擎。该搜索引擎类似于元搜索引擎,但区别在于不是同时调用多个搜索引擎,而是由用户从提供的4个引擎之中选择,因此他叫集合式搜索引擎更确切些。
(2)、门户搜索引擎:如Aol Search、Msn Search等虽然提供搜索服务,但自身既没有分类目录也没有网页数据库,其搜索结果完全来自于其他引擎。
(3)、免费链接目录(Free For ALL links,FFA):这类网站一般只简单地的滚动排列链接条目,少部分有简单的分类目录,不过规模比起Yahoo!等目录索引要小得多。
除了上面的分类,搜索引擎还应具有以下功能:
A、网页搜索功能
B、网站搜索功能
C、图片搜索功能
D、新闻搜索功能
E、字典搜索功能
F、功能搜索功能
搜索引擎的关键技术
1、信息收集和存储技术。
网上信息收集和存储一般分为人工和自动两种方式。
人工方式采用传统信息收集、分类、存储、组织和检索的方法。研究人员对网站进行调查、筛选、分类、存储。由专业人员手工建立关键字索引,再将索引信息存入计算机相应的数据库中。
自动方式通常是由网络机器人来完成的。“网络机器人”是一种自动运行的软件,其功能是搜索因特网上的网站和网页。这种软件定期在因特网上漫游,通过网页间链接顺序地搜索新的地址,当遇到新的网页的时,就给该网页上的某些字或全部字做上索引并把它们加入到搜索引擎的数据库中,由此搜索引擎的数据库得以定期更新。
一般来说,人工方式收集信息的准确性要远优于“网络机器人”,但其收集信息的效率及全面性低于“网络机器人”。
2、信息预处理技术。
信息预处理包括信息格式支持与转换及信息过滤。目前因特网上的信息发布格式多种多样,这就要求搜索引擎支持多种文件格式。从实际情况来看,所有的搜索引擎都支持HTML格式,而对于其他文件格式的支持则不同的搜索引擎有不同的规定,最多的能支持200多种文件格式。一般地说,一个企业级的公用Web站点起码应该支持40~60种文件格式。同时搜索引擎还应具备信息格式转换功能,以保证不同格式的数据数据均能在网络流通。信息过滤也是搜索引擎的一项重要技术。在因特网中,存在大量的无用信息,一个好的搜索引擎应当尽量减少垃圾站点的数量,这是信息过滤要着重解决的问题。
3、信息索引技术。
信息索引就是创建文档信息的特征记录,以使用户能够快速地检索到所需信息。建立索引主要涉及以下几个问题。
(1)、信息语词切分和语词词法分析:语词是信息表达的最小单位,由于语词切分中存在切分歧义,切分需要充分利用各种上下文知识。语词词法分析是指识别出各个语词的词干,以便根据词干建立信息索引。
(2)、进行词性标注及相关的自然语言处理:词性标注是指利用基于规则和统计(马尔科夫链)的科学方法对语词进行标注,基于马尔科夫链随即过程的n元语法统计分析方法在词性标注中能达到较高的精度。可利用多种语法规则识别出重要的短语结构。自然语言处理是运用计算机对自然语言进行分析和理解,从而使计算机在某种程度上具有人的语言能力。将自然语言处理应用在信息检索中,可以提高信息检索的精度和相关性。
(3)、建立检索项索引:使用倒排文件的方式建立检索项索引,一般包括“检索项”、“检索项所在文件位置信息”以及“检索项权重”。
(4)、检索结果处理技术:搜索引擎的检索结果通常包含大量文件,用户不可能一一浏览。搜索引擎一般应按与查询的相关程度对检索结果进行排列,最相关的文件通常放在最前面。搜索引擎确定相关性的方法有概率方法、位置方法、摘要方法、分类或聚类方法等。
a、概率方法:根据关键词在文中出现的频率来判定文件的相关性。这种方法对关键词出现的次数进行统计,关键词出现的次数越多,该文件与查询的相关程度就越高。
b、位置方法:根据关键词在文中出现的位置来判定文件的相关性。关键词在文件中出现的越早,文件的相关程度就越高。
c、摘要方法:搜索引擎自动地为每个文件生成一份摘要,让用户自己判断结果的相关性
,以使用户进行选择。
d、分类或聚类方法:搜索引擎采用分类或聚类技术,自动把查询结果归入到不同的类别中。
搜索引擎的体系结构
搜索引擎是指以一定的策略搜集互联网上的信息,在对信息进行组织和处理后,为用户提供检索服务的系统。
搜索引擎主要由搜索器、索引器、检索器和用户接口构成。
一、搜索器。
A、网络蜘蛛:搜索引擎系统结构的搜索器(Spider)俗称网络蜘蛛或网络爬虫,十亿个自动收集网页的系统程序,其功能是日夜不停地在互联网中漫游,搜集信息。它要尽可能多、尽可能快地搜集各种类型的新信息,还要定期更新已经搜索过的旧信息,以避免出现死链接。目前有两种搜集信息的策略:
a、从一个其实URL开始,顺着这些URL中的超链接(Hyperlink),以宽度优先、深度优先或启发式方式循环在互联网中发现信息。起始URL使一些非常流行,包含很多链接的站点(如Yahoo!)。
b、将Web空间按照域名、IP地址或国家划分,每个搜索器负责一个子空间的穷尽搜索。搜索器将搜索回来的每个文档过滤掉格式符,提取文本数据 Fulltext。每个文档对应着一个Fulltext文件,内容包括网页标题、网页URL、大小、时间、类型、分类等属性及文本内容,所有生成的这些文件交给索引器进行索引处理。搜索器的实现常用分布式并行计算技术,以提高信息发现和更新的速度。
B、内容提取(文本文件)。
对网页内容的提取,一直是网络蜘蛛重要的技术。整个系统一般采用插件的形式,通过一个插件管理服务程序,遇到不同格式的网页采用不同的插件机处理,搜索引擎建立索引、处理的对象是文本文件。
C、定期更新策略。
由于网站的内容经常在变化,因此网络蜘蛛也不断地更新其抓取网页的内容,这就需要网络蜘蛛按照一定的周期去扫描网站,查找哪些页面是需要更新的页面,哪些页面是新增页面,哪些页面是已经过期的死链接。
二、索引器。
索引器(Indexer)的功能是理解搜索器所搜索的信息,由分析索引系统程序对收集回来的网页进行分析,提取网页信息(包括网页所在URL、编码类型、页面内容包含的关键词、关键词位置、生成时间、大小、与其他网页的链接关系等),根据一定的相关度算法进行大量复杂计算,得到每一个网页针对页面内容中及超链接中每一个关键词的相关度(或重要性),然后这些相关信息建立网页索引数据库。
索引器的工作过程为:索引器读入搜索器生成的Fulltext文件,采用基于位置倒排索引与三级n元索引相结合的索引机制。首先进行分词处理生成索引项,并作归类排序,生成Index文件和inv文件,inv文件为倒排表(Inversion List),即由索引项查找相对应的文档,Index文件形成分词-倒排表对应关系,内容为分词在倒排表中相应的文档块起始地址,含有该词的文档数量等信息。索引器可以使用集中式索引算法或分布式索引算法。当数据量很大时,必须实现即时索引,否则不能跟上信息量急剧增加的速度。索引算法对索引器的性能(如大规模峰值查询时的响应速度)有很大的影响。一个搜索引擎的有效性在很大程度上取决于索引器的质量。
索引项有客观索引项和内容索引项两种:客观索引项与文档的语义内容无关,如作者名、URL、更新时间、编码、长度、链接流行度(Link Popularity)等;内容索引项是用来反映文档内容的,如关键词极其权重,短语、单字等。内容索引项可以分为单索引项和多索引项(短语索引项)两种。单索引项对于英文来讲是英语单词,比较容易提取,因为单词之间有天然的分隔符(空格);对于中文等连续书写的语言,必须进行词语的切分(分词)。
词法分析是对自然语言的形态进行分析,判定词的结构、类别和性质的过程。对于以英文为代表的形态丰富的语言来说,英文的词法分析的一个重要的过程是形态分析,即将英文词还原成词干。而汉语形态变化很少,其主要的问题在于书写时词与词之间没有空格,所以通常中文词法分析的关键是分词,分词往往是后续进一步处理的基础。
(1)、英语词法分析:英文的形态分析主要目标是将句子中的词从词性还原到词甚至词根。英文的形态分析常常也称为stemming,分析器称为 stemmer。形态分析常常采用基于自动机的规则方法,即将词形变化的规律总结成规则,然后通过自动机的方法对词形进行转换。转换的过程当中可以使用或者不使用词典。
(2)、中文分词技术:基于机械匹配和机遇概率统计的分词方法。前者通过对已有词典的机械匹配来得到分词结果。后者不需要任何词典就可以得到粉刺结果,或者对粗切分结果进行基于概率统计后的处理来得到最终分词结果。
中文分词技术面临的两个最大的问题是切分歧义和未定义词的问题。前者要解决在上下文环境下不同切分结果的选择;后者要解决词典中未收录词(如人名、地名、机构名等)的识别。可以在机械匹配的基础上通过规则的方法来求解上述两个问题。然而规则方法很难穷尽真实文本的各种现象。目前比较主流的方法是通过对真实文本的概率统计来求解切分歧义和未定义词问题。
三、检索器。
检索器(Searcher)的功能是针对用户的查询请求在索引库中快速检出文档,采用一定的信息检索模型进行文档与查询的相关度评价,对将要输出的结果进行排序、聚类等操作,并实现某用户相关性反馈机制。信息检索模型有以下几种:布尔逻辑模型、模糊逻辑模型、向量空间模型、概率模型及混合模型等。
检索器的工作过程如下:检索器对用户接口(Uesr Interface, UI)提出的查询要求进行递归分析,在UI中一般采用基本语法来组织要检索的条件。检索器通常支持多种语法规则,如逻辑操作符AND、OR、NOT,使用 “+、-”连接号和通配符,使用逗号、括号或引号进行词组查找。对于每个索引项,匹配Index文件,查到倒排表(inv文件)中包含该索引项的文档,并对所有查找出的文档进行集合运算,将结果集按照基于内容和基于链接分析的方法进行相
关度评价并排序,最大限度地保证检索出的结果与用户查询串有很高的相关性,将最终形成的有序的文档结果集合返回给用户。
四、用户接口。
用户接口(UI)的作用是输入用户查询,显示结果查询结果,提供用户相关性反馈机制。UI的主要目的是方便用户使用搜索引擎,高效率、多方式地从搜索引擎中得到有效、及时的信息。UI的实际和实现使用人机交互的理论和方法,以充分适应人类的思维习惯。
用户输入接口可以分为简单接口和复杂接口两种。简单接口只提供用户输入查询串的文本框;复杂接口可以让用户对查询进行限制,如逻辑运算(与、或、+、-)、相近关系(相邻、near)、域名范围(如edu.com)、出现位置(如标题、内容)、信息时间、长度等。目前一些公司和机构正在考虑制定查询选项的标准。
当互联网用户通过UI提交查询时,检索器程序根据用户输入的查询关键词,在已由索引器完成索引和初排序的存储桶(Barrel)中进行查找,并采用特定的页面优先度算法对其结果进行最终排序,使之尽可能符合用户查询需求。最后UI将最终查询结果呈现在互联网用户面前。
搜索引擎的工作原理(一)
搜索引擎的工作原理可以分为三步:从互联网上抓取网页、建立索引数据库、在索引数据库中搜索排序。
(1)、从互联网上抓取网页,就是利用能够从互联网上自动收集网页的Spider系统程序,自动访问互联网,并沿着任何网页中的所有URL爬到其他网页,重复这个过程,并把爬过的所有网页收集回来。
(2)、建立索引数据库,就是由分析索引系统程序对收集回来的网页进行分析,提取相关网页信息,根据一定的相关度算法进行大量复杂计算,得到每一个网页针对页面内容中及超链中每一个关键词的相关度或重要性,然后利用这些相关信息建立网页索引数据库。
(3)、在索引数据库中搜索排序,就是当用户输入关键词搜索后,由搜索系统程序从网页索引数据库中找到符合该关键词的所有相关网页。因为所有相关网页针对该关键词的相关度早已算好,所以只需按照现成的相关度数值排序,相关度越高,网站排名越靠前。最后,由页面生成系统将搜索结果的链接地址和页面内容摘要等内容组织起来返回给用户。
一、网页搜集。
搜索引擎网页的搜集过程并不是在用户提交关键词后进行及时的搜索,而是预先将网页搜集好并进行相关处理之后等待用户的查询。我们知道,在网络比较畅通的情况下,从网上下载一篇网页大概需要1秒钟,因此如果用户在查询的时候即时去网上抓来成千上万的网页,一个个分析处理后再和用户的查询匹配,这样的查询时间就会很慢也不可能满足用户的需求。有可能多个用户重复抓取同一个页面,使系统的效益低下。面对大量的用户查询,不可能每来一个查询,系统就到网上“搜索” 一次。大规模的搜索引擎是将一批预先搜集好的网页进行管理和维护。如何维护?有两种基本的方法。
A、定期搜索法:每次搜集替换上一次的内容,我们称之为“批量搜集”。由于每次都是重新来一次,对于大规模搜索引擎来说,每次搜索的时间都会花费几周的时间。这样的开销比较大,通常两次搜集的时间间隔也很长(如早期天网的版本大概每3个月搜索一次,google在一段时间曾是每隔28天搜索一次)。这种方法的好处是系统实现比较简单,缺点是实时性不高,还有重复搜集所带来的额外宽带的消耗。
B、增量搜集法:最初时搜集好一批数据,以后只是新出现的网页和改变的网页并删除不再存在的网页。除了新闻网站外,许多网页的内容并不是经常变化的,这样一来每次搜集的网页量不会很大,于是可以经常去搜集。30万个网页,一台pc机,在一般的网络条件下,半天也就搜集完了。这样的系统表现出来的信息实时性就会比较高,主要缺点是系统实现比较复杂。
在具体搜集过程中,如何抓取一篇篇的网页,可以有不同的考虑。最常见的是一种所谓“爬取”的过程,具体过程是:将Web上的网页集合看作十亿个有向图,搜集过程从给定的起始URL的集合S(或者说种子)开始,沿着网页中的链接,按照先深、先宽或者别的某种策略遍历,不停的从S中移除URL,下载相应的网页,解析出网页中的超链接URL,看是否已经被访问过,将未访问的那些URL加入集合S。整个过程可以形象地想象为一个蜘蛛(Spider)在蜘蛛网上(Web)上爬行。一个真正的系统其实是多个“蜘蛛”同时在爬。
这种方法实现起来并不算困难,但需要注意的是在实现过程中通过一定的策略,使收集到的某些网页相对比较"重要"。我们知道任何搜索引擎是不可能将Web上网页搜集完全的,通常都是在某些条件的限制下来结束搜集的过程(如磁盘满,或者搜集时间已经太长了)。因此就有了一个尽量使搜到的网页比较重要的问题,这对于那些并不追求很大的数量覆盖率的搜索引擎特别重要。一般情况下按照先款搜索方式得到网页集合比先深搜索得到的集合重要。
另外一种可能的方式是在第一次全面网页搜集后,系统维护相应的URL集合S,往后的搜集直接基于这个集合。每搜到一个网页,如果它发生变化并含有新的 URL,则将它们对应的网页也抓回来,并将这些新URL也放到集合S中;如果S中某个URL对应的网页不存在了,则将它从S中删除。这种方式也可以看成是一种极端的先款搜索,即第一层是一个很大的集合,往下最多只延伸一层。
还有一种方法是让网站拥有者主动向搜索引擎提交他们的网址,系统在一定时间内向那些网站派出“蜘蛛”程序,扫描该网站的所有网页并将有关信息存入数据库中。大型商业搜索引擎一般都提供这种功能。
搜索引擎的工作原理(二)
互联网上大部分信息都是以HTML格式存在,对于索引来说,只处理文本信息。因此需要把网页中的文本内容提取出来,过滤掉一些脚本标识符和一些无用的广告信息,同时记录文本的版面格式信息。网页处理主要包括四个方面:关键词的提取、重复或转载网页的消除、链接分析和网页重要程度的计算。
一、关键词的提取:由于HTML文档产生来源的多样性,许多网页在内容上比较随意,不仅文字不讲究规范、完整,而且还可能包含许多和主要内容无关的信息(如广告、导航条、版权说明等)。为了支持查询服务,需要从网页源文件中提取能够代表它的内容的一些特征—关键词。
网页处理阶段的一个基本任务,就是要提取出网页源文件的内容部分所包含的关键词。对于中文来说,就是要根据一个词典,用一个“切词软件”,从网页文字中切出词典所含的词语来。这样一片网页就可以由一组词来近似代表了,p={t1、t2、t3、t4......tn}。一般来讲,可能得到很多的词,同一个词可能在一篇网页中多次出现。从效果和效率来考虑,不应该让所所有的词都出现在网页的表示中,要去掉诸如“的”、“在”等没有内容指示意义的词,称为 “停用词”(Stop Word)。这样,对一篇网页来说,有效的词语数量大约为200。
二、重复或转载网页的消除:我们知道Web上的信息存在大量的重复现象。统计分析表明,网页的重复率平均大约为4。也就是说,当通过一个URL在网上看到一篇网页的时候,还有另外三个不同的URL也给出相同或者基本相似的内容。这种现象对于搜索引擎来说,它在搜集网页的时要消耗机器时间和网络宽带资源,而且如果在查询的结果中出现,将消耗查询者计算机的资源,也会引来用户的抱怨。因此,消除内容重复或主题重复的网页是网页处理阶段的一个重要任务。
三、链接分析:从信息检索的角度讲,如果系统仅仅面对的是内容的文字,我们能依据关键词和关键词在文档中集合出现的频率来统计该词的相对重要性以及和某些内容的相关性。有了HTML标记后,情况可能进一步改善,例如,在同一篇HTML中,<H1>和</H1>之间的信息很可能就比在<H4>和</H4>之间的信息更重要。尤其HTML文档中所含的指向其他文档的链接信息是人们特别关注的的对象,认为它们不仅给出了网页之间的关系,而且还对判断网页的内容有很重要的作用。
四、网页重要度的计算:搜索引擎返回给用户的,是一个和用户查询相关的结果列表。列表中条目的顺序是很重要的一个问题。不同的顺序到达的结果是不一样的,因此搜索引擎实际上追求的是一种统计意义上的满意。例如,人们认为利用google查询比较好,是因为在多数情况下google返回的内容更要符合用户的需要。
如何对查询结果进行排序有很多因素需要考虑,如何理解一篇网页比另外一篇网页重要?人们参照科技文档重要性的评估方式,核心思想就是“被引用的最多的就是最好的”。“引用”这个概念恰好可以通过在网页之间的超链进行体现,作为google创立核心技术的Page-Rank就是这种思路的成功体现。除此以外,人们还注意到网页和文档的不同特点,即一些网页主要是大量的对外链接,其本身基本没有一个明确的主题内容,而另外有些网页则被大量的其他网页链接。从某种意义上讲,这形成了一种对偶的关系,这种关系可以使得人们在网页上建立另外一种重要性指标。这些指标有的可以在网页处理阶段计算,有的则要在查询阶段计算,但都是作为查询服务阶段最终形成结果排序的部分参数。
搜索引擎的工作原理(三)
为了完成查询服务,需要有相应的元素来进行表达,这些元素主要有:原始网页文档、URL和标题、编号、所含重要关键词的集合以及它们在文档中出现的位置信息、其他一些指标,如重要程度、代码等。
用户通过搜索引擎看到的不是一个“集合”,而是一个“列表”。如何从集合产生成一个列表,是服务子系统的主要工作。服务子系统是在服务进行的过程中涉及相关软件程序,而网页处理子系统事先为这些软件程序准备了相应的数据。服务子系统的工作原理,主要有4个方面。
一、查询方式和匹配。
查询方式指的是系统允许用户提交查询的方式。对于普通用户来说,最自然的方式就是“需要查询什么就输入什么”。例如,用户输入“搜索引擎”,可能是他想了解搜索引擎的相关定义、概念和相应的知识;也可能是想了解目前有哪些搜索引擎,如何进行搜索等内容;也有可能是用户关心的是间接的信息。目前用一个词或者短语来进行查询,依然是主流的查询模式,这种模式比较简单并且容易实现。
词的是搜索引擎中非常关键的一部分,通过字典文件对网页内的词进行识别。对于西文信息来说,需要识别词的不同形式,例如:单复数、过去式、组合词、词根等,对于一些亚洲语言(中文、日文、韩文等)需要进行分词处理。识别出网页中的每个词,并分配唯一的wordID号,用于为数据索引中的索引模块服务。
例如:当用户输入“搜索引擎教程”时,系统首先将这个短语进行分词处理,将其分为“搜索 引擎 教程”,然后删除那些没有查询意义或者在每篇文档中都会出现的词,最后形成一个用于参与匹配的查询词表,该词表的数据结构是一个用对应的分词作为索引的一个倒排文件,它的每一个元素都对应倒排文件。这样系统就完成了查询和文档的匹配。
二、索引库的建立。
索引库的建立是数据索引中结构最复杂的一部分。一般需要建立两种索引:文档索引和关键词索引。文档索引分配给每个网页唯一的docID号,根据docID 号索引出在这个网页中出现过多少个wordID,每个wordID出现的次数、位置、大小格式等,形成docID对应wordID的数据列表;关键词索引其实是对文档索引的的逆索引,根据wordID索引出这个词出现在哪些网页(用wordID表示),出现在每个网页的次数、位置、大小写格式等,形成 wordID对应docID的列表。
三、结果排序。
结果就是将查询的结果的集合以列表的方式显示出来。所谓列表,就是按照某种评价方式,确定出查询结果集合中元素的顺序,让这些元素以某种顺序呈现出来,这就是相关性。相关性是形成这种查询顺序的的基本因素,有效地定义相关性本身是很难的,从原理上讲它不仅和查询词有关,而且还和用户的查询背景,以及用户的查询历史有关。不同需求的用户可能输入同一个查询,同一个用户在不同的时间输入的相同查询可能是针对不同的需求的。
一般来讲,结果排序的方法是基于词汇出现频率,也就是说在一篇文档中包含的查询词越多,则该文档就越应该排在前面。这样的思路有一定的道理,而且在倒排文件数据结构上很容易实现。当我们通过关键词的提取过程,形成一篇文档的关键词的集合后,很容易得到每一个词在文档中出现的次数,即词率,而倒排文件中每个倒排表的长度则对应着每个词所涉及的文档的篇数,即文档频率。然而,由于网页编写的自发性、随意性较强,仅仅针对关键词的出现来决定文档的顺序,在Web 上做信息检索表现出明显的缺点,需要有其他技术的补充。通过在网页处理阶段为每篇网页形成一个独立于查询词(也就是和网页内容无关)的重要性指标,将它和查询过程中形成的相关性指标结合形成一个最终的排序,是目前搜索引擎给出查询结果排序的主要方法。
搜索的处理过程是对用户的搜索请求进行满足的过程,通过用户输入搜索关键词,搜索服务器对应关键词字典,把搜索关键词转化为wordID,然后在索引库中得到docID列表,对docID列表进行扫描和wordID的匹配,提取满足条件的网页,然后计算网页和关键词的相关度,根据相关度的数值返回给用户。
四、文档摘要。
搜索引擎给出的结果是一个有序的条目列表,每个条目中有3个基本元素:标题、网页描述、网址和摘要。其中摘要需要从网页正文中生成。
一般来讲,搜索引擎在生成摘要时可以归纳为两种方式:一种是“静态”方式,即独立于查询,按照某种股则,事先在预处理阶段从网页内容中提取出一些文字,如截取网页正文的开头512个字节(对应256个汉字),或者将每一个段落的第一个句子拼起来,等等。这样形成的摘要存放在查询子系统中,一旦相关文档被选中与查询匹配,就读出返回给用户。这种方式的优点是实现起来比较容易,缺点是摘要可能和查询的内容无关;另一种是“动态摘要”方式,即在相应查询的时候,根据查询词在文档中的位置,提取出周围的文字来,在显示时将查询词标亮。这是目前大多数搜索引擎采用的方式。为了保证查询的效率,需要在预处理阶段分词的时候记住每个关键词在文档中出现的位置。