搜索引擎的原理及spider程序浅析

2011-12-31 00:00:00刘金松
电脑知识与技术 2011年25期


  摘要:当今世界,互联网在人们的生活中扮演着越来越重要的角色。通过互联网,企业可以随时发布各种信息,使得企业借助互联网,可以取得不断的发展;而普通的互联网的用户,则可以通过互联网方便的查询各种各样的信息。尤其是3G手机的普及及应用,搜索引擎更是受到人们的青睐,该文就搜索引擎的原理及核心程序Spider做下简要分析。
  关键词:互联网;搜索引擎;Spider
  中图分类号:TP393文献标识码:A文章编号:1009-3044(2011)25-6118-02
  搜索引擎是一个为因特网用户提供信息搜索服务的网站,它使用一些些程序和算法把因特网上的所有信息归类,以帮助人们在浩瀚的“网海”中搜查找所需要的信息。
  随着互联网的不断发展和日益普及,网上的信息量在爆炸性的增长,全球Web页面的数目已经超过40亿以上,中国的网页数目估计也超过了3亿以上。由于信息的飞速增长,用户通过互联网一个一个查找已不可能。新的信息查询技术——搜索引擎技术就应运而生,并得到了飞速发展。搜索引擎以一定的算法在互联网中搜集发现信息,对信息进行理解、提取、组织和处理,并为用户提供检索服务。
  另一方面,由于互联网的发展,随着更多的网民迫切需要通过网络了解更多的公司及产品,国内外众多企业也逐渐意识到网络对于自身发展的重要性。企业为了推广自己的产品,就需要让更多的人知道、访问自己公司的网站,尤其是被潜在的客户浏览,就需要借助专业的网站推广手段,而搜索引擎,正是网站推广中最廉价、最高效的方式。搜索引擎是目前最重要、效果最明显的网站推广方式,也是最为成熟的一种网络营销方法。搜索引擎的搜索排名也成了搜索引擎公司的新亮点。
  目前比较流行的“搜索引擎”主要有百度(baidu)、谷歌(Google)等。下面就其中的几个简要介绍一下:
  百度(baidu):百度是全球最大的中文搜索网站,在中文检索方面处于绝对领先地位,百度除提供网页搜索外,还提供MP3、文档、地图、视频、新闻等多样化的搜索服务,率先创造了以百度贴吧、知道为代表的搜索社区,将无数网民头脑中的智慧融入了搜索。另外近几年还推出了百度百科,搜集新词汇新名词,成了新的亮点。“百度一下”已经成为了人们进行搜索的新动词。
  谷歌(Google):“谷歌搜索引擎”由美国谷歌公司开发研制。谷歌的使命就是要为您提供网上最好的查询服务,促进全球信息的交流。谷歌开发出了世界上最大的搜索引擎,提供了最便捷的网上信息查询方法。通过对 30 多亿以上网页进行整理,谷歌可为世界各地的用户提供适需的搜索结果,而且搜索时间通常不到半秒。现在,谷歌每天需要提供2亿次以上查询服务。谷歌近期推出的谷歌地球、地图、卫星等服务,使用户足不出户便知天下。
  从搜索引擎的工作原理来区分,搜索引擎有两种基本类型:一类是纯技术型的全文检索搜索引擎,如百度、Google等,其原理是通过爬行程序(即Spider程序)到各个网站收集、存储信息,并通过一定的算法建立索引数据库供用户查询。另一类称为分类目录,这种搜索引擎并不采集网站的任何信息,而是利用各网站向搜索引擎提交网站信息时填写的关键词和网站描述等资料,经过人工审核编辑后,如果符合网站登录的条件,则人工输入数据库以供查询。分类目录的好处是,用户可以根据目录有针对性地逐级查询自己需要的信息,而不是像技术性搜索引擎一样同时反馈大量的信息。
  搜索引擎的实现原理,根据搜索引擎的工作原理不同而不同,若是通过Spider(即网络蜘蛛或网络爬行程序)来实现的,则分下边四个过程:首先在互联网上搜索网页搜索完网页后建立相应的索引数据库然后在索引数据库中搜索最后通过一定算法对搜索结果进行处理和排序。具体过程是从互联网上抓取网页,首先使用能够从互联网上自动收集网页的爬行程序(Spider),遍历整个网络,并沿着任何网页中的所有链接爬到其它网页,不断的重复这过程,并把爬过的所有网页收集到服务器中并建立索引数据库。由索引数据库中的相关语言将收集回来的网页进行分析,提取相关信息(包括网页所在超级链接、语言类型、页面内容包含的关键词、关键词位置等),根据一定的算法计算,得到每一个网页针对页面内容中及超链接中每一个关键词的相关度,然后用这些相关信息建立索引数据库(爬行程序不是每次输入内容时都重新爬行的,这样建立索引数据库也方便了用户再查寻),在索引数据库中检索,当用户输入关键词后,由搜索系统程序从网页索引数据库中找到符合该关键词的所有相关网页,按一定算法对搜索结果进行处理排序。最后由页面生成系统将搜索结果的链接地址和页面内容摘要等内容组织起来显示给用户。图1是一个典型的搜索引擎系统架构图,搜索引擎的各部分都会相互交错、相互依赖。
  下边就Spider即网络蜘蛛程序做下简要分析:
  蜘蛛程序即(Spider)就是把互联网形容成一个大的蜘蛛网,那么Spider程序就是在网络上的蜘蛛。网络蜘蛛就是在互联网上寻找链接点,然后沿着链接点一个一个爬行下去寻找所有的链接点,最后提取出爬行过的链接点进入一定的数据库。
  网络蜘蛛一般有两种搜索方法:广度优先遍历法(Breadth-First traversal)和深度优先遍历法(Depth-First traversal)(如图2所示)。广度优先是指从图中某个顶点A出发,在访问了A之后依次访问A的各个未曾访问过的邻接点,然后分别从这些邻接点出发依次访问它们的邻接点,并使“先被访问的顶点的邻接点”先于“后被访问的顶点的邻接点”被访问,直至图中所有已被访问的顶点的邻接点都被访问到。若此时图中尚有顶点未被访问,则另选图中一个未曾被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。广度优先用于网络搜索则是指网络蜘蛛会先抓取起始网页中链接的所有网页,然后 再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。深度优先遍历是指如下右图首先访问出发点A,并将其标记为已访问过;然后依次从A出发搜索A的每个邻接点如E。若E未曾访问过,则以E为新的出发点继续进行深度优先遍历,直至图中所有和源点A有路径相通的顶点(亦称为从源点可达的顶点)均已被访问为止。若此时图中仍有未访问的顶点,则另选一个尚未访问的顶点作为新的源点重复上述过程,直至图中所有顶点均已被访问为止。深度优先用于网页是指网络蜘蛛会从起始页开始,一个一个链接跟踪下去,处理完这条线路之后再转入下一个起始页继续跟踪链接。这个方法有个优点是网络蜘蛛在设计的时候比较容易。
  对于搜索引擎来说,要抓取互联网上所有的网页几乎是不可能的。下边就简单介绍下两种抓取顺序的个人理解。
  广度优先的抓起顺序:如上分析,如果上边A是一个网站的主页的话(index.htm),Spider(爬行程序)为了提高搜索效率,Spider会首先爬行其主页,如果主页有用户匹配的信息,即显示出来。如没有则搜索该网站的B、C、D、E、F链接,然后再爬行B、C、D、E、F网页如果有,则抽取其中一个显示,如果没有则在爬行该网页的下一层链接,即图2中的H、G,如果有则显示出该链接。依次类推。这样的爬行无疑省去了大量的时间和存储空间。例如:搜索“论文”如果主页有该词则主动提取出来,如果主页无出现,则深入该网站的下一层,依次类推。
  深度优先的抓取顺序:如图2右边显示,如果A是一个网站的主页的话(index.htm),如果输入一个词后,爬行程序开始检索A网站,并且爬行其所有的链接直到链接的末端,如A网站的F层到F层的下一层G层,则是如此进行。E也是如此,有E层进入其下一层网页即H,再有H进入下一层即I,依次爬行下去,直到找到该网站的所有有匹配的页面,如此爬行,工作量无疑太大,但是却提高了检索率。
  Spider程序是搜索引擎的核心, Spider数据的结果直接影响到搜索引擎的评价指标,第一个Spider程序由MIT的Matthew K Gray操刀,该程序的目的是为了统计互联网中主机的数目。
  目前网站上开源的spider程序很多,例如JAVA语言、PHP语言、C#语言、C++语言等,这里就不一一介绍各个语言了及具体算法了。
  该文就搜索引擎原理及其Spider做了简单的介绍,不合理之处请大家多多批评。
  参考文献:
  [1] 邢志宇. 搜索引擎的定义. http://www.sowang.com/zhuanjia/xzhy/20041126.