互联网是知识和信息的海洋,如何快速而准确地获取网络——这个海洋中的信息对大家来说是一个不可回避的课题,信息查询是互联网提供的一项非常重要的服务,如果能够善于利用,将给我们的工作、学习和日常生活带来极大的方便。搜索引擎就是为我们提供这方面服务的工具。
1.什么是搜索引擎
搜索引擎(Search Engine)指用于因特网信息查找的网络工具。它的主要任务是搜索其他网站上的信息,并将这些信息进行分类并建立索引,然后把索引的内容放到数据库中,当用户向搜索引擎提交搜索请求的时候,搜索引擎会从数据库中找出匹配的资料反馈给用户,用户再根据这些信息访问相应的网站,从而找到自己需要的资料。
搜索引擎的原理,可以看做三步:从互联网上抓取网页→建立索引数据库→在索引数据库中搜索排序。从互联网上抓取网页——利用能够从互联网上自动收集网页的Spider系统程序,自动访问互联网,并沿着任何网页中的所有URL爬到其它网页,重复这过程,并把爬过的所有网页收集回来。建立索引数据库——由分析索引系统程序对收集回来的网页进行分析,提取相关网页信息(包括网页所在URL、编码类型、页面内容包含的关键词、关键词位置、生成时间、大小、与其它网页的链接关系等),根据一定的相关度算法进行大量复杂计算,得到每一个网页针对页面内容中及超链中每一个关键词的相关度(或重要性),然后用这些相关信息建立网页索引数据库。在索引数据库中搜索排序——当用户输入关键词搜索后,由搜索系统程序从网页索引数据库中找到符合该关键词的所有相关网页。因为所有相关网页针对该关键词的相关度早已算好,所以只需按照现成的相关度数值排序,相关度越高,排名越靠前。最后,由页面生成系统将搜索结果的链接地址和页面内容摘要等内容组织起来返回给用户。
常用的搜索引擎:
百度:www.baidu.com
Google:www.google.com
北大天网:e.pku.edu.cn
雅虎:www.yahoo.com.cn
搜狐:www.sohu.com
中国搜索:www.huicong.com http://www.zhongsou.com/
2.搜索引擎的发展历史
1990年以前,没有任何人能搜索互联网。
所有搜索引擎的祖先,是1990年由Montreal的McGill University的学生Alan Emtage、Peter Deutsch、Bill Wheelan发明的Archie(Archie FAQ)。当时World Wide Web还未出现。Archie是第一个自动索引互联网上匿名FTP网站文件的程序,但它还不是真正的搜索引擎。Archie是一个可搜索的FTP文件名列表,用户必须输入精确的文件名搜索,然后Archie会告诉用户哪一个FTP地址可以下载该文件。
1994年4月,Stanford两名博士生,美籍华人Jerry Yang(杨致远)和David Filo共同创办了超级目录索引雅虎(Yahoo),并成功的使搜索引擎的概念深入人心。从此搜索引擎进入了高速发展时期。
3.搜索引擎的分类
按照工作方式的不同,搜索引擎主要分为三类,一是目录索引类搜索引擎,二是全文检索搜索引擎,三是元搜索引擎。
1.目录索引搜索引擎(Search Index/ Directory)
目录索引搜索引擎中的数据是各个网站自己提交的,它就像一个电话号码薄一样,按照各个网站的性质,把其网址分门别类排在一起,大类下面套着小类,一直到各个网站的详细地址,一般还会提供各个网站的内容简介。用户不使用关键字也可进行查询,只要找到相关目录,就完全可以找到相关的网站(注意:是相关的网站,而不是这个网站上某个网页的内容)。这类搜索引擎往往也提供关键字查询功能,但在查询时,它只能够按照网站的名称、网址、简介等内容进行查询,所以它的查询结果也只是网站的URL地址,不能查到具体的页面。由于这类搜索引擎的数据一般由网站提供,因此它的搜索结果并不完全准确,并不是严格意义上的搜索引擎。如Yahoo、sohu等
网易分类目录 http://search.163.com
搜狐分类目录 http://dir.sohu.com
新浪分类目录 http://dir.sina.com.cn
雅虎中国分类目录 http://cn.yahoo.com
2.全文检索搜索引擎(Search Engine)
由于专门用于检索信息的Robot程序象蜘蛛(spider)一样在网络间爬来爬去,因此,搜索引擎的Robot程序被称为spider(Spider FAQ)程序。这类搜索引擎通过 “蜘蛛”程序自动在网络上提取各个网站的信息来建立自己的数据库,并向用户提供查询服务,是一种真正意义上的搜索引擎。如AlaVista、baidu、Google、Excite、Hotbot、Lycos等。
其实,如今的搜索引擎和目录索引已经开始相互融合,全文检索搜索引擎也提供目录索引服务。而像Yahoo!这样的目录索引也开始和Google的搜索引擎合作,从而扩大搜索范围。
3.元搜索引擎
现在的许多搜索引擎,其收集信息的范围、索引方法、排名规则等都各不相同,每个搜索引擎平均只能涉及到整个Web资源的30-50%,这样导致同一个搜索请求在不同搜索引擎中获得的查询结果的重复率不足34%,而每一个搜索引擎的查准率不到45%。元搜索引擎(META Search Engine)是将用户提交的检索请求发送到多个独立的搜索引擎上去搜索,并将检索结果集中统一处理,以统一的格式提供给用户,因此有搜索引擎之上的搜索引擎之称。它的主要精力放在提高搜索速度、智能化处理搜索结果、个性化搜索功能的设置和用户检索界面的友好性上,查全率和查准率都比较高。WebCrawler、InfoMarket等。
http://www.hsfz.net.cn/fish/fish.php
(整合、调用、控制和优化利用源搜索引擎的技术,称为“元搜索技术”)
参考文献:
1.网络资源大搜索:
http://www.shineblog.com/user1/11591/archives/2005/166953.shtml
2.前生今世——搜索引擎发展史:
http://bbs.enet.com.cn/message.do?operate=doList&threadID=2181373&forumID=C1010
3.网络资源查询
ttp://www.libnet.sh.cn/ckfw/guide/index.htm
4.集成搜索引擎与元搜索引擎
http://www.sowang.com/sousuo/20031005.htm
5.揭开神秘面纱,搜索引擎原理浅析
http://www.138.org.cn/info/3176.htm
对于搜索引擎, 在索引量和搜索量大到一定程度的时候, 索引更新的效率会逐渐降低, 服务器的压力逐渐升高, 因此基本上整个搜索引擎的利用率可以说是越来越低了, 并且随着海量数据存储带来的困难, 设计一个良好的分布式搜索引擎将是一个搜索引擎能否面相未来发展的关键因素了.
那么分布式搜索引擎的最主要的核心问题是哪些呢?
1. 分布的信息获取和计算以及对此进行的数据统一
这里面包括爬虫/或者相应的数据获取机制的分布, 对信息进行加工的统一管理
2. 数据处理后的分布存储和管理
主要是文件的准确定位和更新,增加,删除,移动的机制
3. 前端搜索服务的分布
主要处理大规模并发请求时的分发机制
基于以上3个基本需求, 基本上可以构造如下4类的分布式搜索引擎:
1. 分布式元搜索引擎
2. 散列分布搜索引擎
3. P2P 分布搜索引擎
4. 局部遍历型搜索引擎
下面逐步介绍以上4类可扩展的搜索引擎:
1. 分布式元搜索:
拥有多个单个的搜索引擎, 中心搜索引擎是利用这些分布的单个的搜索引擎的结果进行撮合得到完整的结果.
这样的设计方案要求各个单元的搜索引擎拥有相同的排序算法和基本相同的数据输出结构,以便由中心搜索进行整理。
对于这类的搜索引擎,关键的设计是要求每一个单元所拥有的索引不构成重复,但是进行数据的采集(爬虫)时可以采取独立的系统获取后再按照规则分布到各个单元上。
优点,设计简单,快速,并且任何一个单元可以随时的摘掉但并不影响太大。
缺点,对于大规模的并发并非好的解决办法
2.散列分布搜索引擎
根据Query对索引服务器和文档服务器进行散列,做到对于任何的索引词能够准确的定位到具体的索引服务器并从而定位到正确的文档服务器。
优点,抗压,设计简单
缺点,对于单个索引服务器或者文档服务器的容量等动态的调整较困难
3.Peer 2 peer 搜索引擎
著名的Napster就是这样的一种设计,利用集中方式的索引,配合分布于世界各地的单个的计算机形成的文件源,构成了世界上最庞大的p2p搜索引擎之一。
这种设计里的中心索引服务器只记录一些相对关键的信息,例如位置(IP,序列号),歌曲的名字,作者等,其它的信息一概可以从任何在线并且拥有本条全面信息的计算机上获取。同时p2p也可以根据搜索建立一些中间路由的缓存,即将一些搜索结果存在单个或者相近的节点上,加快搜索速度。
优点,可以超级大,基本上不需要有维护成本
缺点,中心服务器的更新效率很低,信息源不稳定
4. 局部遍历型搜索引擎
这类的搜索引擎又可以采用多种设计方案,其中比较可行的是对信息进行聚类后建立信息树,搜索时只需要从树的一个分支下去遍历便可以了。局部遍历应当有一定的规则,并且在设计初期就需要对每一个加入的索引进行相对准确的位置安排,使得放置在合适的节点上,以保证搜索的效率。
优点,容易解决抗压,搜索精度高,搜索效率高
缺点,设计复杂,调整索引所在节点的位置不易
总体来说,搜索引擎的设计方法可以很多,这里只是抛砖引玉,相信未来会有更多的巧妙的设计方案出现。