1、毕业论文题 目:网络搜索引擎应用研究 _ 学 院: 学生姓名: 指导教师: 起讫日期: _ 摘 要搜索引擎,通常指的是收集了因特网上几千万到几十亿个网页并对网页中的每一个词(即关键词)进行索引,建立索引数据库的全文搜索引擎。当用户查找某个关键词的时候,所有在页面内容中包含了该关键词的网页都将作为搜索结果被搜出来。在经过复杂的算法进行排序后,这些结果将按照与搜索关键词的相关度高低,依次排列,方便用户查找。如何更加快捷、准确地查找到用户所需的网络信息资源,是各大搜索引擎服务提供商和计算机网络研究人员的研究热点。作为计算机专业的学生,搜索引擎技术对我们有很大的诱惑力,了解搜索引擎的发展现状、原理和技
2、术手段,从算法的角度来认识搜索引擎,是我们必须掌握的知识之一。本文主要研究搜索引擎的基本原理、搜索算法及实现技术。关键字:搜索引擎、基本原理、搜索算法、技术。目 录摘 要 1第一章 引言 51.1搜索引擎的初现与发展 61.1.1搜索引擎的初显 61.1.2搜索引擎的发展 61.2 搜索引擎在我国的发展现状81.2.1我国搜索引擎的背景 81.2.2 搜索引擎的现状91.3本文的研究内容10第二章 搜索引擎的原理 112.1搜索引擎的原理概述 112.2搜索引擎的实现原理 122.2.1从互联网上抓取网页 122.2.2建立索引数据库 122.2.3在索引数据库中搜索 132.2.4对搜索结果
3、进行处理排序 132.3垂直搜索引擎的工作原理 142.3.1垂直搜索引擎的基本原理 142.3.2垂直搜索引擎的技术原理 142.3.3垂直搜索引擎技术框架 15第三章 搜索引擎的核心-网络蜘蛛 163.1网络蜘蛛 163.1.1网络蜘蛛的介绍 163.1.2网络蜘蛛的工作原理 163.2网络蜘蛛的结构分析 173.2.1如何解析HTML 173.2.2Spider程序结构 193.2.3如何构建Spider程序193.2.4如何提高程序性能 203.2.5网络蜘蛛的代码分析213.3网络蜘蛛的处理对象233.4网络蜘蛛面临的难题23第四章 搜索引擎的主要技术254.1搜索器、索引器、检索器
4、及用户接口254.1.1搜索器254.1.2索引器254.1.3检索器254.1.4用户接口264.2中文搜索引擎的中文分词技术26第五章 搜索引擎的系统构架275.1搜索引擎的系统构架图275.2搜索引擎的系统构架275.2.1从互联网上抓取网页275.2.2建立索引数据库285.2.3在索引数据库中排序285.2.4对搜索结果进行排序28总结 29致谢 30参考文献 31第一章 引 言近几年,随着网络的不断发展和壮大,搜索引擎越来越成为人们生活中重要的一部分,找资料、查地图、听音乐,只有想不到的,没有搜索不到的。中国十年多来互联网的不断发展,造就出1.3亿的网民,搜索引擎也出现空前的火热。
5、在互联网出现的初期,雅虎、新浪、网易等大型门户网站拥有着绝对多的浏览量,原因在于当初的大部分网站在技术上无法与门户网站相媲美,多数质量较差,内容不丰富,所以大型门户网站优秀的网页设计风格,大量的信息及时更新赢得了用户的认可,创造了第一次互联网的高峰。然而随之近年来网络技术的普及与应用,建立一个专业的网站已经不存在太多的技术门槛。于是看好互联网前景的网站纷纷涌现在我们的面前。相对比而言在某些领域中,大型门户网站的页面风格反而不如一些中小型网站的界面漂亮,同时各种分类的行业网站也慢慢的兴起,使得搜索引擎越来越成为人们生活中必不可少的实用工具。搜索引擎的出现,整合了众多网站信息,恰恰起到了信息导航的
6、作用。通用搜索引擎就如同互联网第一次出现的门户网站一样,大量的信息整合导航,极快的查询,将所有网站上的信息整理在一个平台上供网民使用,于是信息的价值第一次普遍的被众多商家认可,迅速成为互联网中最有价值的领域。互联网的低谷由此演变为第二次高峰。大家熟知的搜索引擎Google、百度、雅虎等是通用搜索引擎现如今的杰出代,他们为互联网的发展做出了重要的贡献。然而,搜索引擎行业也不是一家公司就可以独撑天下的,从百度的上市、yahoo中国的并购一系列动作表明,如今的搜索引擎大战如同门户网站初期的竞争一样激烈。相信,通用搜索引擎在经历过一段时间的角逐后,也将会继续维持几大服务商各自分控一部分市场的局面。总而
7、言之搜索引擎改变了人们的生活给人们的生活工作学习带来了巨大的帮助。1.1搜索引擎的初现与发展1.1.1 搜索引擎的初显搜索引擎从1990年原型初显,到现在成为人们生活中必不可少的一部分,它经历了太多技术和观念的变革。出现之前,互联网上就已经存在许多旨在让人们共享的信息资源了。这些资源当时主要存在于各种允许匿名访问的FTP 站点。为了便于人们在分散的FTP资源中找到所需的东西,1990年,加拿大麦吉尔大学(McGillUniversity)的几个大学生开发了一个软件Archie。它是一个可搜索的FTP文件名列表,用户必须输入精确的文件名搜索,然后Archie会告诉用户哪一个FTP地址可以下载这个
8、文件。Archie实际上是一个大型的数据库,再加上与这个大型数据库相关联的一套检索方法。Archie虽然还不是搜索引擎,但是从它的工作原理上看,它是所有搜索引擎的祖先。当万维网(WorldWideWeb)出现后,人们可以通过 html传播网页信息,网络上的信息开始成倍增长。人们纷纷使用各种方法将网络上的信息搜集来,进行分类、整理,以方便查找。现在人们很熟悉的网站雅虎(Yahoo)就是在这个环境下诞生的。还在Stanford大学读书的美籍华人杨致远和他的同学迷上了互联网。他们将互联网上有趣的网页搜集过来,与同学一起分享。后来,1994年4月,他们俩共同办了雅虎。随着访问量和收录链接数的增长,雅虎
9、目录开始支持简单的数据库搜索。但是因为雅虎的数据是手工输入的,所以不能真正被归为搜索引擎,事实上只是一个可搜索的目录。1.1.2搜索引擎的发展当“蜘蛛”程序出现时,现代意义上的搜索引擎才初露端倪。它实际上是一种电脑“机器人”(Computer Robot),电脑“机器人”是指某个能以人类无法达到的速度不间断地执行某项任务的软件程序。由于专门用于检索信息的“机器人”程序就象蜘蛛一样在网络间爬来爬去,反反复复,不知疲倦。所以,搜索引擎的“机器人”程序就被称为“蜘蛛”程序。这种程序实际是利用html文档之间的链接关系,在Web上一个网页一个网页的爬取(crawl),将这些网页抓到系统来进行分析,并放
10、入数据库中。第一个开发出“蜘蛛”程序的是Matthew Gray,他于1993年开发了World Wide Web Wanderer,它最初建立时是为了统计互联网上的服务器数量,到后来发展到能够捕获网址。现代搜索引擎的思路就来源于Wanderer,后来很多人在此基础上对蜘蛛程序进行了改进。1994年7月20日发布的Lycos网站第一个将 “蜘蛛”程序接入到其索引程序中。引入“蜘蛛”后给其带来的最大优势就在于其远胜于其它搜索引擎的数据量。自此之后几乎所有占据主导地位的搜索引擎中,都靠“蜘蛛”来搜集网页信息。Infoseek是另一个重要的搜索引擎,于1994年年底才与公众见面。起初,Infosee
11、k只是一个不起眼的搜索引擎,它沿袭Yahoo!和Lycos的概念,并没有什么独特的革新。但是它友善的用户界面、大量附加服务使它在用户中赢得了口碑。1995年12月,它与Netscape的战略性协议,使它成为一个强势搜索引擎:当用户点击Netscape浏览器上的搜索按钮时,弹出Infoseek的搜索服务,而此前由Yahoo!提供该服务。 1995年12月15日,Alta Vista正式上线。它是第一个支持高级搜索语法的搜索引擎,成功地整合了此前人类所有的信息检索技术,解决了包括字根处理、关键词检索、布尔逻辑,以及通过向量空间模型的查询排名等关键问题。正式公开之前,Alta Vista就已经拥有2
12、0万访问用户,在短短三个星期之内,到访人数由每天30万次增加到200万次。它的成功在于满足了用户三个方面的需求:网上索引范围超过了此前任何一家搜索引擎;短短几秒钟内便可从庞大的数据库中为用户返回搜索结果;Alta Vista小组从一开始就采用了一种模块设计技术,能够跟踪网站的流行趋势,同时不断扩大处理能力。在当时许多搜索引擎之中,Alta Vista脱颖而出,成为网络搜索的代名词。Google就是站在这样的巨人的肩膀上颠覆并创造着。“上网即搜索” 改变了人们上网方式的,就是现在鼎鼎大名的Google。Google并不是搜索引擎的发明者,甚至有点落后,但是它却让人们爱上了搜索。1998年9月,在
13、佩奇和布林创建Google之时,业界对互联网搜索功能的理解是:某个关键词在一个文档中出现的频率越高,该文档在搜索结果中的排列位置就要越显著。这就引出了这样一个问题,如果一个页面充斥着某一个关键字的话,那么它将排在很显著的位置,但这样一个页面对于用户来说,却没有任何意义。佩奇和布林发明了“网页级别”(PageRank)技术,来排列搜索结果。即考察该页面在网上被链接的频率和重要性来排列,互联网上指向这一页面的重要网站越多,该页面的位次也就越高。当从网页A链接到网页B时,Google 就认为“网页A投了网页B一票”。Google根据网页的得票数评定其重要性。然而,除了考虑网页得票数的纯数量之外,Go
14、ogle还要分析投票的网页,“重要”的网页所投出的票就会有更高的权重,并且有助于提高其他网页的“重要性”。 Google以其复杂而全自动的搜索方法排除了任何人为因素对搜索结果的影响。没人能花钱买到更高的网页级别,从而保证了网页排名的客观公正。除此之外,动态摘要、网页快照、多文档格式支持、地图股票词典寻人等集成搜索也都深得网民的喜爱。其他众多搜索引擎也都紧跟Google,推出这些服务。Fast(Alltheweb)公司发布的搜索引擎AllTheWeb,总部位于挪威,其在海外的风头直逼Google。Alltheweb的网页搜索支持Flash和pdf搜索,支持多语言搜索,还提供新闻搜索、图像搜索、视
15、频、MP3、和FTP搜索,拥有极其强大的高级搜索功能。而中国的百度更是凭借“更懂中文”而吸引着中国的网络受众,它拥有超过10亿的中文网页数据库,并且,这些网页的数量每天正以千万级的速度在增长。搜索引擎就越来越成为人们生活中重要的一部分。1.2搜索引擎的现状1.2.1 我国搜索引擎的背景百度上市后,我国的搜索市场一下子热了起来。越来越多的企业围绕着搜索市场作起了文章。而且,在搜索大战的同时,一些企业也抛出了一些惊人言论。近日,记者从专业做人脉交际的联络家()技术总监冉征处了解到,联络家正在加紧研发人脉相关领域的专业垂直,联络家之所以涉足专业垂直搜索引擎领域,是看到未来垂直专业搜索引擎市场的巨大商
16、机,他认为未来搜索市场将进一步细分,象Google、百度等主张大而全的全球式搜索引擎将会面临垂直专业搜索引擎更大的竞争与挑战,他们的市场分额将会被逐渐瓜分,专业的行业性垂直搜索将受到网民的青睐。 那么缘何能得出如此结论呢?CNNIC第十四次互联网调查显示,搜索以71.9的绝对优势成为用户从互联网上获得信息的主要方式。几乎在全球所有的调查中,搜索引擎都是互联网上使用程度仅次于电子邮箱的服务,搜索引擎服务能成为最受欢迎的服务是因为他解决了用户在浩瀚的互联网海量快速定位信息屏颈问题,在海量的网页里找信息按照传统方式需要用户一个网站一个网站一级目录一级目录下找,要耗费大量的精力和时间,几乎是不可能实现
17、的任务。1.2.2 搜索引擎的现状随着互联网的信息量呈爆炸趋势增长,几年前全球式搜索引擎收录的网页量只有几千万页,而现在已经达到几十亿页,数量增加带来的是搜索服务的品质下降,查询的结果集就是海量的,经常是几十万笔的资料,结果里存在大量的重复信息和垃圾信息,用户越来越难迅速的找到符合的信息,现在经常使用搜索引擎可以感觉到很难在短时间内准确的筛选出需要的内容,而垂直搜索引擎针对专业特定的领域或行业的内容做了专业和深入的分析挖掘,精细分类,过滤筛选等,信息定位更精准,因此在此垂直领域或行业提供的搜索服务势必更好更强,更为用户所欢迎。 比如,对于一个网民来说如果有对特定的领域或行业的信息需求的时候,如
18、果一个是专业的垂直搜索能做到精确锁定内容,但内容量偏小,而另一个是能检索出大量内容,但搜索到的内容一大部分都是“垃圾”并且很难找到符合的信息,这样的话,你会选择哪个呢,就如用户想购买一个商品,他是会去专门的比价购物搜索引擎上找还是会去 Google上找,如果你想找一份工作,是会去专门的工作搜索引擎上找还是会去百度上找?答案很明显,更多的用户会舍弃后者,即使前者品牌小名声小,但结果往往是最令网民看重的。 联络家LINKIST一直做人脉交际圈的拓展,也就是现在炙手可热的 SNS网站,SNS网站的目的就是要建立一个庞大的人脉圈,参与其中的人都能通过站内人脉的搜索引擎找到自己想找的人,可以找工作、搜罗
19、人才、寻找合作商机。联络家LINKIST短短几个月的时间已经聚敛起了近7万多位高级商务人士。有了一定的用户基础做铺垫,联络家LINKIST目前大力开发人脉专业领域的垂直搜索引擎,如工作搜索引擎的人脉搜索引擎,而这比以往的“贴简历、翻招聘信息”的机械作法要灵活的多。 而且,能做出这样的预测显然并不是空穴来风。据记者了解,现在搜索市场大量的的垂直专业搜索引擎的诞生如雨后春笋般,如比价购物搜索引擎,工作搜索引擎,博客搜索引擎等等,占了百度几乎一半以上的流量的MP3搜索,其实也可以说是专业的搜索MP3的垂直搜索引擎,许多垂直门户也纷纷推出了自己的搜索引擎系统。那么,象Google、百度能会不会通过“补
20、课”挤掉这部分专用搜索市场呢?冉先生对记者表示,Google、百度注定了走的是大而全的粗犷路线,而专用的垂直搜索引擎则不同,需要对做内容的深度挖掘,做精细的分类,构建专业领域的知识库体系等等,而这些都是Google、百度等无法做到的,他们根本就没有精力做这些,也不可能针对每个行业领域都能做透,“术业有专攻”就是这个道理。 就象门户网站与专业垂直的行业性网站可以共存一样,网民也有不同的胃口,有的仅仅是简单模糊的信息就已经满足了,而一些寻找精确内容的网民则更青睐于专业引擎,比如你打算换一份工作,以前去人才招聘网站贴简历往往都尿杳无音信,现在,就可以去联络家LINKIST试试,还能跟同行的朋友交换下
21、最新的行业信息,探讨下行业发展趋势。而且,以后联络家 LINKIST推出人脉引擎后,只需轻轻点击便能收获颇丰。 有专家预测,未来,专业的垂直搜索将掀起一轮热潮,而且,垂直搜索引擎不会是一个简单的文本框、一个按纽就走遍天下了,更需要专业的信息辅助和配套的增值内容的支持,也就是对相关内容的二次“加工”。而这恰恰是Google、百度类所不能提供的。相信,届时很多VC的眼球会聚焦于此,而Google、百度又将面临怎样的挑战呢?我们只能拭目以待了 。1.3 本文的研究内容本文研究的最终目的是可以让我们更详细的了解目前基本上人人都在使用的百度、谷歌、搜狗,也就是搜索引擎,但在大部分人眼中所谓的搜索引擎也就
22、是我之前提到过的那些大型的搜索引擎,所以我们想让更多的人详细的了解已经深入大家学习、工作、生活中的搜索引擎。所做的工作是:对搜索引擎的初显、发展、现状做了大概的叙述,对搜索引擎的技术原理、工作的原理、系统构架等做了具体的了解,希望大家可以对搜索引擎有更进一步的了解和认识。第二章 搜索引擎的原理21 搜索引擎的原理概述全文搜索引擎的“网络机器人”或“网络蜘蛛”是一种网络上的软件,它遍历Web空间,能够扫描一定IP地址范围内的网站,并沿着网络上的链接从一个网页到另一个网页,从一个网站到另一个网站采集网页资料。它为保证采集的资料最新,还会回访已抓取过的网页。网络机器人或网络蜘蛛采集的网页,还要有其它
23、程序进行分析,根据一定的相关度算法进行大量的计算建立网页索引,才能添加到索引数据库中。我们平时看到的全文搜索引擎,实际上只是一个搜索引擎系统的检索界面,当你输入关键词进行查询时,搜索引擎会从庞大的数据库中找到符合该关键词的所有相关网页的索引,并按一定的排名规则呈现给我们。不同的搜索引擎,网页索引数据库不同,排名规则也不尽相同,所以,当我们以同一关键词用不同的搜索引擎查询时,搜索结果也就不尽相同。 和全文搜索引擎一样,分类目录的整个工作过程也同样分为收集信息、分析信息和查询信息三部分,只不过分类目录的收集、分析信息两部分主要依靠人工完成。分类目录一般都有专门的编辑人员,负责收集网站的信息。随着收
24、录站点的增多,现在一般都是由站点管理者递交自己的网站信息给分类目录,然后由分类目录的编辑人员审核递交的网站,以决定是否收录该站点。如果该站点审核通过,分类目录的编辑人员还需要分析该站点的内容,并将该站点放在相应的类别和目录中。所有这些收录的站点同样被存放在一个“索引数据库”中。用户在查询信息时,可以选择按照关键词搜索,也可按分类目录逐层查找。如以关键词搜索,返回的结果跟全文搜索引擎一样,也是根据信息关联程度排列网站。需要注意的是,分类目录的关键词查询只能在网站的名称、网址、简介等内容中进行,它的查询结果也只是被收录网站首页的URL地址,而不是具体的页面。分类目录就像一个电话号码薄一样,按照各个
25、网站的性质,把其网址分门别类排在一起,大类下面套着小类,一直到各个网站的详细地址,一般还会提供各个网站的内容简介,用户不使用关键词也可进行查询,只要找到相关目录,就完全可以找到相关的网站(注意:是相关的网站,而不是这个网站上某个网页的内容,某一目录中网站的排名一般是按照标题字母的先后顺序或者收录的时间顺序决定的)。 搜索引擎并不真正搜索互联网,它搜索的实际上是预先整理好的网页索引数据库。 真正意义上的搜索引擎,通常指的是收集了因特网上几千万到几十亿个网页并对网页中的每一个词(即关键词)进行索引,建立索引数据库的全文搜索引擎。当用户查找某个关键词的时候,所有在页面内容中包含了该关键词的网页都将作
26、为搜索结果被搜出来。在经过复杂的算法进行排序后,这些结果将按照与搜索关键词的相关度高低,依次排列。 现在的搜索引擎已普遍使用超链分析技术,除了分析索引网页本身的内容,还分析索引所有指向该网页的链接的URL、AnchorText、甚至链接周围的文字。所以,有时候,即使某个网页A中并没有某个词比如“恶魔撒旦”,但如果有别的网页B用链接“恶魔撒旦”指向这个网页A,那么用户搜索“恶魔撒旦”时也能找到网页A。而且,如果有越多网页(C、D、E、F)用名为“恶魔撒旦”的链接指向这个网页A,或者给出这个链接的源网页(B、C、D、E、F)越优秀,那么网页A在用户搜索“恶魔撒旦”时也会被认为更相关,排序也会越靠前
27、。 22搜索引擎的实现原理221从互联网上抓取网页利用能够从互联网上自动收集网页的网络蜘蛛程序,自动访问互联网,并沿着任何网页中的所有URL爬到其它网页,重复这过程,并把爬过的所有网页收集到服务器中。222建立索引数据库由索引系统程序对收集回来的网页进行分析,提取相关网页信息(包括网页所在URL、编码类型、页面内容包含的关键词、关键词位置、生成时间、大小、与其它网页的链接关系等),根据一定的相关度算法进行大量复杂计算,得到每一个网页针对页面内容中及超链中每一个关键词的相关度(或重要性),然后用这些相关信息建立网页索引数据库。223在索引数据库中搜索当用户输入关键词搜索后,分解搜索请求,由搜索系
28、统程序从网页索引数据库中找到符合该关键词的所有相关网页。224对搜索结果进行处理排序所有相关网页针对该关键词的相关信息在索引库中都有记录,只需综合相关信息和网页级别形成相关度数值,然后进行排序,相关度越高,排名越靠前。最后由页面生成系统将搜索结果的链接地址和页面内容摘要等内容组织起来返回给用户。下图是一个典型的搜索引擎系统架构图,搜索引擎的各部分都会相互交错相互依赖。其处理流程按照如下描述:“网络蜘蛛”从互联网上抓取网页,把网页送入“网页数据库”,从网页中“提取URL”,把URL送入“URL数据库”,“蜘蛛控制”得到网页的URL,控制“网络蜘蛛”抓取其它网页,反复循环直到把所有的网页抓取完成。
29、系统从“网页数据库”中得到文本信息,送入“文本索引”模块建立索引,形成“索引数据库”。同时进行“链接信息提取”,把链接信息(包括锚文本、链接本身等信息)送入“链接数据库”,为“网页评级”提供依据。“用户”通过提交查询请求给“查询服务器”,服务器在“索引数据库”中进行相关网页的查找,同时“网页评级”把查询请求和链接信息结合起来对搜索结果进行相关度的评价,通过“查询服务器”按照相关度进行排序,并提取关键词的内容摘要,组织最后的页面返回给“用户”。2.3垂直搜索引擎的工作原理231垂直搜索引擎的基本原理垂直搜索的本质是对垂直门户信息提供方式的一次简化性的整合。垂直搜索引擎针对某个特定领域,招聘、购物
30、、blog、新闻等方面都是垂直搜索的潜在领域,假想一下,如果网络上有非常便利的产品垂直搜索引擎、新闻垂直搜索平台,以后上网就不会漫无目的了,现在许多的行业门户做的很红火,而垂直搜索引擎的模式本身就是一种很好的门户网站。232垂直搜索引擎的技术原理垂直搜索有搜索引擎的共性,即需要抓取大量的网页,分析其中的数据,特性是通用搜索更着重于正文内容的分离,关键字索引,链接关联权重分析,是一种非结构化分析,而垂直搜索更着重于正文内容模式分离,数据调整,相关链接分析,是一种结构化分析过程。 垂直搜索引擎技术同信息采集技术有一些共同点,不同的是,信息采集主要是将采集的信息导入本地库,而垂直搜索引擎主要是以网页
31、的形式展现给用户,通用搜索引擎主要是利用一个spider程序到网络上爬行,一般是某个特定的周期派出一次将网页更新,垂直搜索引擎同样应有一个spider程序,但该程序只在一些特定的网络上爬行,并不会对每一个链接都感兴趣,相对来说,垂直搜索引擎的收录范围大大缩小了,但并不意味着内容的缩小,通用搜索引擎对一些动态脚本是不敏感的,例如*asp?id=*之类的网页一般不被收录,而恰恰是这类动态网页包含了丰富的内容,垂直搜索引擎是必须收录这些动态脚本的,这就需要在技术上做一些特殊处理,另外由于目前网页中的链接形式非常多,不但有动态脚本也有flash做的链接,这些链接方式通过传统的spider程序是很难解析
32、出来的,在垂直搜索引擎中也应该解决。233垂直搜索技术框架 网站分析你需要设定自己需要的网站资料,并设定行业统一模板。 站点初始化不同于通用搜索,很多垂直搜索需要登录到站点内部才能拿到有效信息或完整信息,所以你需要一个模拟登录的过程,很多时候你甚至需要一个模拟的注册过程。页面爬虫抓取页面数据。 图片爬虫鉴于负载分摊原则,这是一个独立模块,并衍生出MP3爬虫,Flash爬虫,视频爬虫等等模块。 数据分析模式分离正文内容,分析有用链接,为爬虫产生新的数据URI。 迁移完整数据拷贝集中,修改部分数据格式,使之适应行业统一模板,并做一些数据挖掘和深加工工作。垂直搜索还没有形成大的气候,不要奢望有行业站
33、点主动去做垂直搜索引擎优化,我们能做的只能是优化垂直搜索引擎。 数据发布发布到你的外网服务器,对关键数据进行分词,建立合适的索引。 外网查询最快的检索速度,一个更好的UI,更多的应用,可行的盈利模式。俗话说物以类聚,人以群分,垂直搜索引擎定位于一个行业,服务于一群特定需求的人群,这个特点决定了垂直搜索的社区化行为。人们利用垂直搜索引擎解决问题,分享回馈。现在做网站都讲求社区化,所以说垂直搜索引擎是对垂直门户信息提供方式的整合。 第三章 搜索引擎的核心-网络蜘蛛31网络蜘蛛 311网络蜘蛛的介绍 网络蜘蛛即Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider就是在
34、网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页,从 网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网 站所有的网页都抓取完为止。这样看来,网络蜘蛛就是一个爬行程序,一个抓取网页的程序。312网络蜘蛛的工作原理对于搜索引擎来说,要抓取互联网上所有的网页几乎是不可能的,从目前公布的数据来看,容量最大的搜索引擎也不过是抓取了整个网页数量的百分之四十左右。这 其中的原因一方面是抓取技术的瓶颈,无法遍历所有的网页,有许多网页无法从其它网页的链接中找到;另一个原因是存储技术和处理技术的问题,如果按照
35、每个页 面的平均大小为20K计算(包含图片),100亿网页的容量是1002000G字节,即使能够存储,下载也存在问题(按照一台机器每秒下载20K计算, 需要340台机器不停的下载一年时间,才能把所有网页下载完毕)。同时,由于数据量太大,在提供搜索时也会有效率方面的影响。因此,许多搜索引擎的网络蜘 蛛只是抓取那些重要的网页,而在抓取的时候评价重要性主要的依据是某个网页的链接深度。 在抓取网页的时候,网络蜘蛛一般有两种策略:广度优先和深度优先。广度优先是指网络蜘蛛会先抓取起始网页中链接的所有网页,然后再选择其中 的一个链接网页,继续抓取在此网页中链接的所有网页。这是最常用的方式,因为这个方法可以让
36、网络蜘蛛并行处理,提高其抓取速度。深度优先是指网络蜘蛛会从 起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。这个方法有个优点是网络蜘蛛在设计的时候比较容易。由于不可能抓取所有的网页,有些网络蜘蛛对一些不太重要的网站,设置了访问的层数。例如,在上图中,A为起始网页,属于0层,B、C、D、E、F属于第1 层,G、H属于第2层,I属于第3层。如果网络蜘蛛设置的访问层数为2的话,网页I是不会被访问到的。这也让有些网站上一部分网页能够在搜索引擎上搜索 到,另外一部分不能被搜索到。对于网站设计者来说,扁平化的网站结构设计有助于搜索引擎抓取其更多的网页。 网络蜘蛛在
37、访问网站网页的时候,经常会遇到加密数据和网页权限的问题,有些网页是需要会员权限才能访问。当然,网站的所有者可以通过协议让网络蜘蛛不去抓 取(下小节会介绍),但对于一些出售报告的网站,他们希望搜索引擎能搜索到他们的报告,但又不能完全免费的让搜索者查看,这样就需要给网络蜘蛛提供相应的 用户名和密码。网络蜘蛛可以通过所给的权限对这些网页进行网页抓取,从而提供搜索。而当搜索者点击查看该网页的时候,同样需要搜索者提供相应的权限验证。3.2 网络蜘蛛的结构分析 Internet是建立在很多相关协议基础上的,而更复杂的协议又建立在系统层协议之上。Web就是建立在HTTP ( Hypertext Transf
38、er Protocol ) 协议基础上,而HTTP又是建立在TCP/IP ( Transmission Control Protocol / Internet Protocol ) 协议之上,它同时也是一种Socket协议。所以网络机器人本质上是一种基于Socket的网络程序。3.2.1如何解析HTML因为Web中的信息都是建立在HTML协议之上的,所以网络机器人在检索网页时的第一个问题就是如何解析HTML。在解决如何解析之前,先来介绍下HTML中的几种数据。文本:除了脚本和标签之外的所有数据 注释:程序员留下的说明文字,对用户是不可见的 简单标签:由单个表示的HTML标签 开始标签和结束标签
39、:用来控制所包含的HTML代码 。我们在进行解析的时候不用关心所有的标签,只需要对其中几种重要的进行解析即可。超连接标签超连接定义了WWW通过Internet链接文档的功能。他们的主要目的是使用户能够任意迁移到新的页面,这正是网络蜘蛛最关心的标签。 像映射标签图像映射是另一种非常重要的标签。它可以让用户通过点击图片来迁移到新的页面中。表单标签表单是Web页面中可以输入数据的单元。许多站点让用户填写数据然后通过点击按钮来提交内容,这就是表单的典型应用。表格标签表格是HTML的构成部分,通常用来格式化存放、显示数据。 我们在具体解析这些HTMl标签有两种方法:通过JavaTM中的Swing类来解析
40、或者通过Bot包中的HTMLPage类来解析,本人在实际编程中采用后者。 Bot包中的HTMLPage类用来从指定URL中读取数据并检索出有用的信息。下面给出该类几种重要的方法。HTMLPage构造函数 构造对象并指定用于通讯的HTTP对象。 Public HTMLPage(HTTP http) GetForms方法 获取最后一次调用Open方法检索到的表单清单。 Public Vector getForms() GetHTTP方法 获取发送给构造函数的HTTP对象。 Public HTTP getHTTP() GetImage方法 获取指定页面的图片清单 Public Vector getI
41、mage() GetLinks方法 获取指定页面的连接清单 Public Vector getLinks() Open方法 打开一个页面并读入该页面,若指定了回调对象则给出所有该对象数据 Public void open(String url,HTMLEditorKit.ParserCallback a) 3.2.2 Spider程序结构网络蜘蛛必须从一个网页迁移到另一个网页,所以必须找到该页面上的超连接。程序首先解析网页的HTML代码,查找该页面内的超连接然后通过递归和非递归两种结构来实现Spider程序。递归结构递归是在一个方法中调用自己本身的程序设计技术。虽然比较容易实现但耗费内存且不能
42、使用多线程技术,故不适合大型项目。非递归结构。这种方法使用队列的数据结构,当Spider程序发现超连接后并不调用自己本身而是把超连接加入到等待队列中。当Spider程序扫描完当前页面后会根据制定的策略访问队列中的下一个超连接地址。 虽然这里只描述了一个队列,但在实际编程中用到了四个队列,他们每个队列都保存着同一处理状态的URL。 等待队列 在这个队列中,URL等待被Spider程序处理。新发现的URL也被加入到这个队列中 。处理队列 当Spider程序开始处理时,他们被送到这个队列中 。错误队列 如果在解析网页时出错,URL将被送到这里。该队列中的URL不能被移入其他队列中 。完成队列 如果解
43、析网页没有出错,URL将被送到这里。该队列中的URL不能被移入其它队列中。 同一时间URL只能在一个队列中,我们把它称为URL的状态。 以上的图表示了队列的变化过程,在这个过程中,当一个URL被加入到等待队列中时Spider程序就会开始运行。只要等待队列中有一个网页或Spider程序正在处理一个网页,程序就会继续他的工作。当等待队列为空并且当前没有任何网页时,Spider程序就会停止它的工作。3.2.3如何构造Spider程序在构造Spider程序之前我们先了解下程序的各个部分是如何共同工作的。以及如何对这个程序进行扩展。 流程图如下所示: IspiderReportable接口这是一个必须实现的接口,可以通过回调函数接受Spider所遇到的页面。接口定义了Spider向他的控制者发送的几个事件。通过提供对每个事件的处理程序,可以创建各种Spider程序。下面是他的接口声明: public interface IspiderReportable public boolean foundInternalLink(String url); public boolean foundExternalLink(String url); public boolean fou