《2022年搜索引擎的原理归类 .pdf》由会员分享,可在线阅读,更多相关《2022年搜索引擎的原理归类 .pdf(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、这篇文章中,我们介绍了google ,它是一个大型的搜索引擎(of a large-scale search engine)的原型,搜索引擎在超文本中应用广泛。 Google的设计能够高效地抓网页并建立索引,它的查询结果比其它现有系统都高明。这个原型的全文和超连接的数据库至少包含 24000000个网页。我们可以从http:/google.stanford.edu/下载。设计搜索引擎是一项富有挑战性的工作。搜索引擎为上亿个网页建立索引,其中包含大量迥然不同的词汇。而且每天要回答成千上万个查询。在网络中,尽管大型搜索引擎非常重要,但是学术界却很少研究它。此外由于技术的快速发展和网页的大量增加,现
2、在建立一个搜索引擎和三年前完全不同。本文详细介绍了我们的大型搜索引擎,据我们所知,在公开发表的论文中,这是第一篇描述地如此详细。除了把传统数据搜索技术应用到如此大量级网页中所遇到的问题,还有许多新的技术挑战,包括应用超文本中的附加信息改进搜索结果。本文将解决这个问题,描述如何运用超文本中的附加信息,建立一个大型实用系统。任何人都可以在网上随意发布信息,如何有效地处理这些无组织的超文本集合,也是本文要关注的问题。关键词 World Wide Web,搜索引擎,信息检索,PageRank, Google1 绪论Web 给信息检索带来了新的挑战。Web 上的信息量快速增长,同时不断有毫无经验的新用户
3、来体验Web 这门艺术。人们喜欢用超级链接来网上冲浪,通常都以象Yahoo这样重要的网页或搜索引擎开始。大家认为List( 目录)有效地包含了大家感兴趣的主题,但是它具有主观性,建立和维护的代价高,升级慢,不能包括所有深奥的主题。基于关键词的自动搜索引擎通常返回太多的低质量的匹配。使问题更遭的是,一些广告为了赢得人们的关注想方设法误导自动搜索引擎。我们建立了一个大型搜索引擎解决了现有系统中的很多问题。应用超文本结构, 大大提高了查询质量。我们的系统命名为google,取名自 googol的通俗拼法,即10 的 100次方 ,这和我们的目标建立一个大型搜索引擎不谋而合。1.1网络搜索引擎 升级换
4、代( scaling up):1994-2000 搜索引擎技术不得不快速升级(scale dramatically)跟上成倍增长的web 数量。 1994年,第一个Web 搜索引擎,World Wide Web Worm(WWWW)可以检索到110 ,000 个网页和Web 的文件。到1994年 11 月,顶级的搜索引擎声称可以检索到 2,000?000(WebCrawler)至 100,000?000个网络文件(来自Search Engine Watch)。可以预见到2000年,可检索到的网页将超过1,000?000,000。 同时,搜索引擎的访问量也会以惊人的速度增长。在 1997年的三四
5、月份, World Wide Web Worm 平均每天收到 1500个查询。在 1997年 11 月, Altavista 声称它每天要处理大约20?000?000个查询。随着网络用户的增长,到2000年,自动搜索引擎每天将处理上亿个查询。我们系统的设计目标要解决许多问题,包括质量和可升级性,引入升级搜索引擎技术(scaling search engine technology),把它升级到如此大量的数据上。1.2 Google:跟上 Web 的步伐( Scaling with the Web)建立一个能够和当今web 规模相适应的搜索引擎会面临许多挑战。抓网页技术必须足够快,才能跟上网页变
6、化的速度(keep them up to date)。存储索引和文档的空间必须足够大。索引系统必须能够有效地处理上千亿的数据。处理查询必须快,达到每秒能处理成百上千个查询(hundreds to thousands per second.)。随着 Web的不断增长,这些任务变得越来越艰巨。然而硬件的执行效率和成本也在快速增长,可以部分抵消这些困难。还有几个值得注意的因素,如磁盘的寻道时间(disk seek time),操作系统的效率(operating system robustness)。在设计 Google的过程中,我们既考虑了Web 的增长速度,又考虑了技术的更新。Google的设计能
7、够很好的升级处理海量数据集。它能够名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 13 页 - - - - - - - - - 有效地利用存储空间来存储索引。优化的数据结构能够快速有效地存取(参考4.2节)。进一步,我们希望,相对于所抓取的文本文件和 HTML 网页的数量而言,存储和建立索引的代价尽可能的小(参考附录B)。对于象Google这样的集中式系统,采取这些措施得到了令人满意的系统可升级性(scaling properties)。1. 3设计目标1.3.1提高搜索
8、质量。我们的主要目标是提高Web 搜索引擎的质量。1994年,有人认为建立全搜索索引( a complete search index)可以使查找任何数据都变得容易。根据 Best of the Web 1994 - Navigators , “ 最好的导航服务可以使在Web 上搜索任何信息都很容易(当时所有的数据都可以被登录)” 。然而 1997年的 Web就迥然不同。近来搜索引擎的用户已经证实索引的完整性不是评价搜索质量的唯一标准。用户感兴趣的搜索结果往往湮没在“ 垃圾结果Junk result”中。实际上,到1997年 11 月为止,四大商业搜索引擎中只有一个能够找到它自己(搜索自己名字
9、时返回的前十个结果中有它自己)。导致这一问题的主要原因是文档的索引数目增加了好几个数量级,但是用户能够看的文档数却没有增加。用户仍然只希望看前面几十个搜索结果。因此, 当集合增大时,我们就需要工具使结果精确(在返回的前几十个结果中,有关文档的数量)。由于是从成千上万个有点相关的文档中选出几十个,实际上,相关的概念就是指最好的文档。高精确非常重要,甚至以响应(系统能够返回的有关文档的总数)为代价。令人高兴的是利用超文本链接提供的信息有助于改进搜索和其它应用。尤其是链接结构和链接文本,为相关性的判断和高质量的过滤提供了大量的信息。Google既利用了链接结构又用到了anchor文本(见2.1 和
10、2.2 节)。1.3.2搜索引擎的学术研究随着时间的流逝,除了发展迅速,Web 越来越商业化。1993年,只有1.5%的 Web 服务是来自 .com域名。到1997年,超过了60% 。同时,搜索引擎从学术领域走进商业。到现在大多数搜索引擎被公司所有,很少技公开术细节。这就导致搜索引擎技术很大程度上仍然是暗箱操作,并倾向做广告 (见附录A) 。 Google的主要目标是推动学术领域在此方面的发展,和对它的了解。另一个设计目标是给大家一个实用的系统。应用对我们来说非常重要,因为现代网络系统中存在大量的有用数据(us because we think some of the most intere
11、sting research will involve leveraging the vast amount of usage data that is available from modern web systems)。例如,每天有几千万个研究。然而,得到这些数据却非常困难,主要因为它们没有商业价值。我们最后的设计目标是建立一个体系结构能够支持新的关于海量Web 数据的研究。 为了支持新研究, Google以压缩的形式保存了实际所抓到的文档。设计 Google的目标之一就是要建立一个环境使其他研究者能够很快进入这个领域,处理海量Web 数据,得到满意的结果,而通过其它方法却很难得到结果。系
12、统在短时间内被建立起来,已经有几篇论文用到了 Google建的数据库,更多的在起步中。我们的另一个目标是建立一个宇宙空间实验室似的环境,在这里研究者甚至学生都可以对我们的海量Web 数据设计或做一些实验。2. 系统特点Google搜索引擎有两个重要特点,有助于得到高精度的搜索结果。第一点,应用Web 的链接结构计算每个网页的Rank 值,称为PageRank,将在 98 页详细描述它。第二点, Google利用超链接改进搜索结果。2.1 PageRank:给网页排序:Web 的引用(链接) 图是重要的资源,却被当今的搜索引擎很大程度上忽视了。我们建立了一个包含518000000个超链接的图,它
13、是一个具有重要意义的样本。这些图能够快速地计算网页的PageRank值,它是一个客观的标准,较好的符合人们心目中对一个网页重要程度的评价,建立的基础是通过引用判断重要性。因此在web 中,PageRank能够优化关键词查询的结果。对于大多数的主题,在网页标题查询中用PageRank优化简单文本匹配, 我们得到了令人惊叹的结果(从 google.stanford.edu可以得到演示) 。 对于 Google主系统中的全文搜索,PageRank也帮了不少忙。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - -
14、 - - - 第 2 页,共 13 页 - - - - - - - - - 2.1.1计算 PageRank文献检索中的引用理论用到Web中,引用网页的链接数,一定程度上反映了该网页的重要性和质量。PageRank发展了这种思想,网页间的链接是不平等的。PageRank定义 如下 : 我们假设T1 Tn 指向网页A(例如,被引用)。参数d 是制动因子,使结果在0, 1 之间。通常d 等于0.85 。在下一节将详细介绍d。 C(A)定义为网页A 指向其它网页的链接数,网页 A 的 PageRank值由下式给出:PR(A) = (1-d) + d (PR(T1)/C(T1) + . + PR(Tn
15、)/C(Tn)注意 PageRank的形式, 分布到各个网页中, 因此所有网页的PageRank和是 1。 PageRank或 PR(A)可以用简单的迭代算法计算,相应规格化Web 链接矩阵的主特征向量。中等规模的网站计算26,000?000网页的 PageRank值要花费几小时。还有一些技术细节超出了本文论述的范围。2.1.2 直觉判断PageRank被看作用户行为的模型。我们假设网上冲浪是随机的,不断点击链接,从不返回,最终烦了,另外随机选一个网页重新开始冲浪。随机访问一个网页的可能性就是它的PageRank值。制动因子d 是随机访问一个网页烦了的可能性,随机另选一个网页。对单个网页或一组
16、网页,一个重要的变量加入到制动因子d 中。这允许个人可以故意地误导系统,以得到较高的PageRank值。我们还有其它的PageRank算法,见 98 页。另外的直觉判断是一个网页有很多网页指向它,或者一些PageRank值高的网页指向它,则这个网页很重要。直觉地,在Web 中,一个网页被很多网页引用,那么这个网页值得一看。一个网页被象Yahoo这样重要的主页引用即使一次,也值得一看。如果一个网页的质量不高,或者是死链接,象Yahoo这样的主页不会链向它。PageRank处理了这两方面因素,并通过网络链接递归地传递。2.2链接描述文字(Anchor Text):我们的搜索引擎对链接文本进行了特殊
17、的处理。大多数搜索引擎把链接文字和它所链向的网页( the page that the link is on)联系起来 。另外,把它和链接所指向的网页联系起来。这有几点好处。第一,通常链接描述文字比网页本身更精确地描述该网页。第二,链接描述文字可能链向的文档不能被文本搜索引擎检索到,例如图像,程序和数据库。有可能使返回的网页不能被抓到。注意哪些抓不到的网页将会带来一些问题。在返回给用户前检测不了它们的有效性。这种情况搜索引擎可能返回一个根本不存在的网页,但是有超级链接指向它。然而这种结果可以被挑出来的,所以此类的问题很少发生。链接描述文字是对被链向网页的宣传,这个思想被用在 World Wid
18、e Web Worm 中,主要因为它有助于搜索非文本信息,能够用少量的已下载文档扩大搜索范围。我们大量应用链接描述文字,因为它有助于提高搜索结果的质量。有效地利用链接描述文字技术上存在一些困难,因为必须处理大量的数据。现在我们能抓到 24000000个网页,已经检索到259000000多个链接描述文字。2.3其它特点除了PageRank和应用链接描述文字外,Google还有一些其它特点。第一 ,所有 hit 都有位置信息,所以它可以在搜索中广泛应用邻近性(proximity)。第二, Google跟踪一些可视化外表细节,例如字号。黑体大号字比其它文字更重要。第三,知识库存储了原始的全文html
19、网页。3 有关工作名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 13 页 - - - - - - - - - Web 检索研究的历史简短。World Wide Web Worm()是最早的搜索引擎之一。后来出现了一些用于学术研究的搜索引擎,现在它们中的大多数被上市公司拥有。与 Web 的增长和搜索引擎的重要性相比,有关当今搜索引擎技术的优秀论文相当少。根据 Michael Mauldin ( Lycos Inc的首席科学家)) ,“ 各种各样的服务(包括Lycos )非
20、常关注这些数据库的细节。” 虽然在搜索引擎的某些特点上做了大量工作。具有代表性的工作有,对现有商业搜索引擎的结果进行传递,或建立小型的个性化的搜索引擎。最后有关信息检索系统的研究很多,尤其在有组织机构集合(well controlled collections)方面。在下面两节,我们将讨论在信息检索系统中的哪些领域需要改进以便更好的工作在Web 上。3.1信息检索信息检索系统诞生在几年前,并发展迅速。然而大多数信息检索系统研究的对象是小规模的单一的有组织结构的集合,例如科学论文集,或相关主题的新闻故事。实际上,信息检索的主要基准,(the Text Retrieval Conference),
21、用小规模的、有组织结构的集合作为它们的基准。大型文集基准只有20GB ,相比之下,我们抓到的24000000个网页占 147GB 。在 TREC 上工作良好的系统,在Web 上却不一定产生好的结果。例如,标准向量空间模型企图返回和查询请求最相近的文档,把查询请求和文档都看作由出现在它们中的词汇组成的向量。在Web 环境下,这种策略常常返回非常短的文档,这些文档往往是查询词再加几个字。例如,查询“Bill Clinton”,返回的网页只包含 “Bill Clinton Sucks”,这是我们从一个主要搜索引擎中看到的。网络上有些争议,用户应该更准确地表达他们想查询什么,在他们的查询请求中用更多的
22、词。我们强烈反对这种观点。如果用户提出象“Bill Clinton”这样的查询请求,应该得到理想的查询结果,因为这个主题有许多高质量的信息。象所给的例子,我们认为信息检索标准需要发展,以便有效地处理Web 数据。3.2 有组织结构的集合(Well Controlled Collections)与 Web的不同点Web是完全无组织的异构的大量文档的集合。Web 中的文档无论内在信息还是隐含信息都存在大量的异构性。例如, 文档内部就用了不同的语言(既有人类语言又有程序),词汇(email地址,链接,邮政编码,电话号码,产品号),类型(文本,HTML , PDF ,图像,声音),有些甚至是机器创建的
23、文件(log 文件,或数据库的输出)。可以从文档中推断出来,但并不包含在文档中的信息称为隐含信息。 隐含信息包括来源的信誉,更新频率,质量,访问量和引用。不但隐含信息的可能来源各种各样,而且被检测的信息也大不相同,相差可达好几个数量级。例如,一个重要主页的使用量,象Yahoo 每天浏览数达到上百万次,于此相比无名的历史文章可能十年才被访问一次。很明显,搜索引擎对这两类信息的处理是不同的。Web 与有组织结构集合之间的另外一个明显区别是,事实上,向Web上传信息没有任何限制。灵活利用这点可以发布任何对搜索引擎影响重大的信息,使路由阻塞,加上为牟利故意操纵搜索引擎,这些已经成为一个严重的问题。这些
24、问题还没有被传统的封闭的信息检索系统所提出来。它关心的是元数据的努力,这在 Web 搜索引擎中却不适用,因为网页中的任何文本都不会向用户声称企图操纵搜索引擎。甚至有些公司为牟利专门操纵搜索引擎。4 系统分析( System Anatomy)首先,我们提供高水平的有关体系结构的讨论。然后,详细描述重要的数据结构。最后,主要应用:抓网页,索引,搜索将被严格地检查。Figure 1. High Level Google Architecture 4.1Google体系结构概述这一节,我们将看看整个系统是如何工作的(give a high level),见图 1。本节不讨论应用和数据结构,在后几节中讨
25、论。为了效率大部分Google是用 c 或 c+实现的,既可以在Solaris也可以在Linux上运行。Google系统中,抓网页(下载网页)是由几个分布式crawlers完成的。一个URL 服务器负责向crawlers提供 URL 列表。抓来的网页交给存储服务器storeserver。然后,由存储服务器压缩网页并把它们存到知识库repository中。每个网页都有一个ID ,称作docID ,当新 URL 从网页中分析出时,就被分配一个docID 。由索引器和排序器负责建立索引index function。索引器从知识库中读取文档, 对其解压缩和分析。每个文档被转换成一组词的出现情况,称作
26、命中 hits。 Hits 纪录了词, 词在文档中的位置,最接近的字号,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 13 页 - - - - - - - - - 大小写。索引器把这些hits分配到一组桶barrel中,产生经过部分排序后的索引。索引器的另一个重要功能是分析网页中所有的链接,将有关的重要信息存在链接描述anchors文件中。该文件包含了足够的信息,可以用来判断每个链接链出链入节点的信息,和链接文本。URL 分解器 resolver阅读链接描述anchor
27、s文件,并把相对URL 转换成绝对URL ,再转换成docID 。为链接描述文本编制索引,并与它所指向的docID关联起来。同时建立由docID 对组成的链接数据库。 用于计算所有文档的PageRank值。 用 docID分类后的 barrels,送给排序器sorter,再根据 wordID进行分类,建立反向索引inverted index。这个操作要恰到好处,以便几乎不需要暂存空间。排序器还给出docID和偏移量列表, 建立反向索引。 一个叫DumpLexicon的程序把这个列表和由索引器产生的字典结合在一起,建立一个新的字典,供搜索器使用。这个搜索器就是利用一个Web 服务器,使用由Dum
28、pLexicon所生成的字典,利用上述反向索引以及页面等级 PageRank来回答用户的提问。4.2 主要数据结构经过优化的Google数据结构,能够用较小的代价抓取大量文档,建立索引和查询。虽然近几年CPU 和输入输出速率迅速提高。磁盘寻道仍然需要10ms 。任何时候Google系统的设计都尽可能地避免磁盘寻道。这对数据结构的设计影响很大。4.2.1 大文件大文件BigFiles是指虚拟文件生成的多文件系统,用长度是64 位的整型数据寻址。多文件系统之间的空间分配是自动完成的。BigFiles包也处理已分配和未分配文件描述符。由于操纵系统不能满足我们的需要,BigFiles也支持基本的压缩选
29、项。4.2.2 知识库Repository Data Structure 知识库 包含每个网页的全部HTML 。每个网页用zlib (见 RFC1950)压缩 。压缩技术的选择既要考虑速度又要考虑压缩率。我们选择zlib 的速度而不是压缩率很高的bzip 。 知识库用bzip 的压缩率接近4 : 1 。 而用 zlib 的压缩率是3 :1。文档一个挨着一个的存储在知识库中,前缀是docID ,长度, URL ,见图 2 。访问知识库不需要其它的数据结构。这有助于数据一致性和升级。用其它数据结构重构系统,我们只需要修改知识库和crawler错误列表文件。4.2.3 文件索引文件索引 保存了有关文
30、档的一些信息。索引以docID的顺序排列,定宽ISAM (Index sequential access mode)。每条记录包括当前文件状态,一个指向知识库的指针,文件校验和,各种统计表。如果一个文档已经被抓到,指针指向docinfo文件,该文件的宽度可变,包含了URL 和标题。否则指针指向包含这个URL 的 URL 列表。这种设计考虑到简洁的数据结构,以及在查询中只需要一个磁盘寻道时间就能够访问一条记录。还有一个文件用于把URL 转换成 docID 。它是 URL 校验和与相应docID的列表,按校验和排序。要想知道某个URL 的 docID ,需要计算URL 的校验和,然后在校验和文件中
31、执行二进制查找,找到它的docID 。通过对这个文件进行合并,可以把一批URL 转换成对应的docID 。URL 分析器用这项技术把URL 转换成 docID 。这种成批更新的模式是至关重要的,否则每个链接都需要一次查询,假如用一块磁盘,322,000?000个链接的数据集合将花费一个多月的时间。4.2.4 词典词典有几种不同的形式。和以前系统的重要不同是,词典对内存的要求可以在合理的价格内。现在实现的系统,一台256M 内存的机器就可以把词典装入到内存中。现在的词典包含14000000词汇(虽然一些很少用的词汇没有加入到词典中)。它执行分两部分 词汇表(用null分隔的连续串)和指针的哈希表
32、。不同的函数,词汇表有一些辅助信息,这超出了本文论述的范围。4.2.5 hit listhit list是一篇文档中所出现的词的列表,包括位置,字号,大小写。Hit list占很大空间,用在正向和反向索引中。因此,它的表示形式越有效越好。我们考虑了几种方案来编码位置,字号,大小写简单编码( 3 个整型数),紧凑编码(支持优化分配比特位),哈夫曼编码。 Hit 的详细信息见图3。我们的紧凑编码每个hit 用 2 字节。有两种类型hit , 特殊 hit和普通hit 。特殊 hit 包含 URL ,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - -
33、 - - - 名师精心整理 - - - - - - - 第 5 页,共 13 页 - - - - - - - - - 标题,链接描述文字,meta tag。普通 hit 包含其它每件事。它包括大小写特征位,字号,12 比特用于描述词在文档中的位置(所有超过 4095的位置标记为4096 )。 字号采用相对于文档的其它部分的相对大小表示,占3 比特 ( 实际只用7 个值,因为111 标志是特殊 hit) 。特殊 hit 由大小写特征位,字号位为7 表示它是特殊hit ,用 4 比特表示特殊hit 的类型, 8 比特表示位置。对于anchor hit八比特位置位分出4 比特用来表示在anchor中
34、的位置, 4 比特用于表明anchor出现的哈希表hash of the docID。短语查询是有限的,对某些词没有足够多的anchor 。我们希望更新anchor hit的存储方式,以便解决地址位和docIDhash域位数不足的问题。因为搜索时,你不会因为文档的字号比别的文档大而特殊对待它,所以采用相对字号。hit 表的长度存储在hit 前。为节省空间hit表长度,在正向索引中和wordID结合在一起,在反向索引中和docID结合存储。这就限制它相应地只占8 到 5 比特(用些技巧,可以从 wordID中借 8bit )如果大于这些比特所能表示的长度,用溢出码填充,其后两字节是真正的长度。F
35、igure 3. Forward and Reverse Indexes and the Lexicon 4.2.6 正向索引实际上,正向索引已经部分排序。它被存在一定数量的barrel中 (我们用64 个 barrels) 。 每个 barrel装着一定范围的wordID。如果一篇文档中的词落到某个barrel ,它的 docID将被记录到这个barrel中,紧跟着那些词(文档中所有的词汇,还是落入该barrel中的词汇)对应的hitlist。这种模式需要稍多些的存储空间,因为一个docID被用多次,但是它节省了桶数和时间,最后排序器进行索引时降低编码的复杂度。更进一步的措施是,我们不是存储
36、docID本身,而是存储相对于该桶最小的docID的差。用这种方法,未排序的 barrel的 docID只需 24 位,省下8 位记录 hitlist长。4.2.7 反向索引除了反向索引由sorter加工处理之外, 它和正向索引包含相同的桶。对每个有效的docID ,字典包含一个指向该词所在桶的指针。它指向由docID和它的相应hitlist组成的doclish ,这个 doclist代表了所有包含该词的文档。doclist中 docID的顺序是一个重要的问题。最简单的解决办法是用doclish排序。这种方法合并多个词时很快。另一个可选方案是用文档中该词出现的次数排序。这种方法回答单词查询,所
37、用时间微不足道。当多词查询时几乎是从头开始。并且当用其它Rank 算法改进索引时,非常困难。我们综合了这两种方法,建立两组反向索引barrel ,一组 barrels的 hitlist只包含标题和anchor hit,另一组barrel包含全部的hitlist。我们首先查第一组索引桶,看有没有匹配的项,然后查较大的那组桶。4.3 抓网页运行网络爬行机器人是一项具有挑战性的任务。执行的性能和可靠性甚至更重要,还有一些社会焦点。 网络爬行是一项非常薄弱的应用,它需要成百上千的web 服务器和各种域名服务器的参与,这些服务器不是我们系统所能控制的。为了覆盖几十亿的网页,Google拥有快速的分布式网
38、络爬行系统。一个URL 服务器给若干个网络爬行机器人(我们采用3 个)提供 URL 列表。 URL服务器和网络爬行机器人都是用Python实现的 。每个网络爬行机器人可以同时打开300 个链接。抓取网页必须足够快。最快时,用4 个网络爬行机器人每秒可以爬行100个网页。速率达每秒600K 。执行的重点是找DNS 。每个网络爬行机器人有它自己的DNS cache,所以它不必每个网页都查 DNS 。每一百个连接都有几种不同的状态:查 DNS ,连接主机,发送请求,接收回答。这些因素使网络爬行机器人成为系统比较复杂的部分。 它用异步IO 处理事件,若干请求队列从一个网站到另一个网站不停的抓取网页。运
39、行一个链接到500多万台服务器的网页爬行机器人,产生1 千多万登陆口,导致了大量的Email和电话。因为网民众多,总有些人不知道网络爬行机器人是何物,这是他们看到的第一个网络爬行机器人。几乎每天我们都会收到这样的Email“哦,你从我们的网站看了太多的网页,你想干什么?” 还有一些人不知道网络搜索机器人避免协议( the robots exclusion protocol),以为他们的网页上写着“ 版权所有, 勿被索引 ” 的字样就会被保护不被索引,不必说,这样的话很难被web crawler理解。因为数据量如此之大,还会遇到一些意想不到的事情。例如,我们的系统曾经企图抓一个在线游戏,结果抓到
40、了游戏中的大量垃圾信息。解决这个问题很简单。但是我们下载了几千万网页后才发现了这个问题。因为网页和服名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 13 页 - - - - - - - - - 务器的种类繁多, 实际上不在大部分Internet上运行它就测试一个网页爬行机器人是不可能。总是有几百个隐含的问题发生在整个web的一个网页上,导致网络爬行机器人崩溃,或者更糟,导致不可预测的不正确的行为。能够访问大部分Internet的系统必须精力充沛并精心测试过。由于象 cra
41、wler这样大型复杂的系统总是产生这样那样的问题,因此花费一些资源读这些Email ,当问题发生时解决它,是有必要的。4.4 Web索引分析任何运行在整个Web上的分析器必须能够处理可能包含错误的大型集合。 范围从 HTML 标记到标记之间几K 字节的 0, 非 ASCII字符,几百层HTML 标记的嵌套,各种各样令人难以想象的错误。为了获得最大的速度,我们没有采用YACC 产生上下文无关文法CFG分析器,而是采用灵活的方式产生词汇分析器,它自己配有堆栈。分析器的改进大大提高了运行速度,它的精力如此充沛完成了大量工作。把文档装入barrel建立索引 分析完一篇文档,之后把该文档装入barrel
42、中,用内存中的hash表 字典,每个词汇被转换成一个wordID。当 hash表字典中加入新的项时,笨拙地存入文件。一旦词汇被转换成wordID,它们在当前文档的出现就转换成hitlist,被写进正向barrel 。索引阶段并行的主要困难是字典需要共享。我们采用的方法是,基本字典中有140万个固定词汇,不在基本字典中的词汇写入日志,而不是共享字典。这种方法多个索引器可以并行工作, 最后一个索引器只需处理一个较小的额外词汇日志。排序 为了建立反向索引,排序器读取每个正向barrel ,以 wordID排序,建立只有标题anchor hi t的反向索引barrel和全文反向索引barrel。这个过
43、程一次只处理一个barrel ,所以只需要少量暂存空间。排序阶段也是并行的,我们简单地同时运行尽可能多的排序器,不同的排序器处理不同的桶。由于barrel不适合装入主存,排序器进一步依据wordID和 docID把它分成若干篮子,以便适合装入主存。然后排序器把每个篮子装入主存进行排序,并把它的内容写回到短反向 barrel和全文反向barrel 。4.5搜索搜索的目标是提供有效的高质量的搜索结果。多数大型商业搜索引擎好像在效率方面花费了很大力气。因此我们的研究以搜索质量为重点,相信我们的解决方案也可以用到那些商业系统中。Google查询评价过程见图4 。1. 分析查询。2. 把词汇转换成wor
44、dID。3. 在短 barrel中查找每个词汇doclist的开头。4. 扫描 doclist直到找到一篇匹配所有关键词的文档5. 计算该文档的rank 6. 如果我们在短barrel ,并且在所有doclist的末尾,开始从全文barrel的 doclist的开头查找每个词,goto 第四步7. 如果不在任何doclist的结尾,返回第四步。8. 根据 rank排序匹配文档,返回前k 个。图 4 Google查询评价在有限的响应时间内,一旦找到一定数量的匹配文档,搜索引擎自动执行步骤8。这意味着,返回的结果是子优化的。我们现在研究其它方法来解决这个问题。过去根据PageRank排序 hit
45、,看来能够改进这种状况。4.5.1 Ranking系统Google比典型搜索引擎保存了更多的web 信息。 每个 hitlist包括位置,字号,大小写。另外,我们还考虑了链接描述文字。Rank 综合所有这些信息是困难的。ranking函数设计依据是没有某个因素对rank影响重大。首先,考虑最简单的情况单个词查询。为了单个词查询中一个文档的rank , Goole 在文档的hitlist中查找该词。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 13 页 - - - - -
46、 - - - - Google认为每个hit 是几种不同类型(标题,链接描述文字anchor ,URL,普通大字号文本,普通小字号文本,)之一, 每种有它自己的类型权重。类型权重建立了一个类型索引向量。 Google计算 hitlist中每种 hit 的数量。然后每个 hit 数转换成 count-weight。Count-weight开始随 hit 数线性增加,很快逐渐停止,以至于hit 数与此不相关。我们计算count-weight向量和 type-weight向量的标量积作为文档的IR 值。 最后 IR 值结合 PageRank作为文档的最后rank 。 对于多词查询,更复杂些。现在,多
47、词hitlist必须同时扫描,以便关键词出现在同一文档中的权重比分别出现时高。相邻词的hit 一起匹配。对每个匹配hit 的集合计算相邻度。相邻度基于hit在文档中的距离,分成 10 个不同的bin 值,范围从短语匹配到根本不相关。不仅计算每类hit数,而且要计算每种类型的相邻度,每个类型相似度对,有一个类型相邻度权type-prox-weight。Count转换成 count-weight,计算 count-weight、type-prox-weight的标量积作为IR 值。 应用某种 debug mode所有这些数和矩阵与查询结果一起显示出来。这些显示有助于改进rank系统。4.5.2 反
48、馈rank函数有很多参数象type-weight和 type-prox-weight。指明这些参数的正确值有点黑色艺术black art。为此,我们的搜索引擎有一个用户反馈机制。值得信任的用户可以随意地评价返回的结果。保存反馈。然后,当修改 rank函数时,对比以前搜索的rank ,我们可以看到修改带来的的影响。虽然不是十全十美,但是它给出了一些思路,当rank函数改变时对搜索结果的影响。5 执行和结果搜索结果的质量是搜索引擎最重要的度量标准。完全用户评价体系超出了本文的论述范围,对于大多数搜索,我们的经验说明Google的搜索结果比那些主要的商业搜索引擎好。作为一个应用PageRank,链接
49、描述文字,相邻度的例子,图4 给出了 Google搜索 bill Clinton的结果。它说明了Google的一些特点。服务器对结果进行聚类。这对过滤结果集合相当有帮助。这个查询,相当一部分结果来自 whitehouse.gov域,这正是我们所需要的。现在大多数商业搜索引擎不会返回任何来自whitehouse.gov的结果, 这是相当不对的。注意第一个搜索结果没有标题。因为它不是被抓到的。Google是根据链接描述文字决定它是一个好的查询结果。同样地,第五个结果是一个Email地址,当然是不可能抓到的。也是链接描述文字的结果。所有这些结果质量都很高,最后检查没有死链接。因为它们中的大部分Pag
50、eRank值较高。 PageRank百分比用红色线条表示。没有结果只含Bill 没有 Clinton或只含 Clinton没有 Bill 。因为词出现的相近性非常重要。当然搜索引擎质量的真实测试包含广泛的用户学习或结果分析,此处篇幅有限,请读者自己去体验Google ,http:/google.stanford.edu/。5.1存储需求除了搜索质量,Google的设计可以随着Web 规模的增大而有效地增大成本。一方面有效地利用存储空间。表1 列出了一些统计数字的明细表和Google存储的需求。由于压缩技术的应用知识库只需53GB的存储空间。是所有要存储数据的三分之一。按当今磁盘价格,知识库相对