搜索引擎与信息搜索器的技术.docx
《搜索引擎与信息搜索器的技术.docx》由会员分享,可在线阅读,更多相关《搜索引擎与信息搜索器的技术.docx(31页珍藏版)》请在冰豆网上搜索。
![搜索引擎与信息搜索器的技术.docx](https://file1.bdocx.com/fileroot1/2023-1/31/aa765dfc-ea5b-418a-911e-0407e5aa8c7e/aa765dfc-ea5b-418a-911e-0407e5aa8c7e1.gif)
搜索引擎与信息搜索器的技术
摘要
随着互联网的迅速发展与普及,网上的信息量呈几何指数增长。
互联网的发展,使得越来越多的人使用网络来娱乐与办公,给我们带来了很多的方便,但互联网上信息的爆炸性发展,却使得我们越来越难找到我们正真需要的东西。
搜索引擎的出现给信息的搜索带来了很大的方便。
然而搜索引擎术离不开信息搜索技术的支持,它需要信息搜索系统为它搜集互联网上的信息。
本文首先介绍了搜索引擎信息搜索器的定义与历史,然后着重阐述了信息搜索器的相关技术,最后介绍使用C#实现的定站信息搜索器,并在信息搜索器的基础上实现搜索引擎。
整个系统实现的功能为:
能对指定站定的网页进行信息收集并把收集的信息加入数据库。
对信息搜索器收集的信息利用中科院的分词系统进行分词。
把分词后的信息利用Lucene建立索引,并最终实现像XX搜索引擎的基本功能一样的网页搜索引擎。
关键词:
搜索引擎信息搜索爬虫搜索器
目录
一引言4
二信息搜索技术的概述5
2.1什么是搜索引擎信息搜索技术5
2.2搜索引擎信息搜索技术的发展历吏5
2.3 信息搜索器的基本框架6
2.4 如何评价信息搜索的性能9
三现有信息搜索器的介绍10
3.1几个著名信息搜索器的介绍10
3.1.1Google的Googlebot特点及评价10
3.1.2Baidu的baiduspider介绍11
3.1.3雅虎的(YahooSlurp)的特点及评价11
3.2通用信息搜索器类12
3.3专用信息搜索器类12
四信息搜索器相关技术14
4.1robots.txt介绍14
4.2网页解析技术15
4.3中文语言处理18
4.3.1分词对搜索引擎的影响18
4.3.2现有的几个中文分词系统介绍19
4.4信息的存储和索引19
五信息搜索器的搜索策略22
5.1广度搜索策略22
5.2深度搜索策略23
5.3最佳优先策略24
六信息搜索器的实现25
6.1开发技术、工具与运行平台25
6.2需求分析25
6.3系统功能与架构25
6.3.1信息搜索系统设计26
6.3.2索引系统和搜索系统的设计28
6.4详细设计29
6.4.1系统基本类及文档29
6.5核心功能介绍31
6.5.1搜索器队列的设计32
6.5.2HTML解析32
6.5.3中文分词33
6.5.3XML配置文件的设计34
6.6线程数的确立与分配35
6.7实验数据36
6.6.1程序运行界面36
6.6.2搜索器统计数据39
6.8实验总结39
致谢40
参考文献40
一引言
随着互联网的迅速发展与普及,网上的信息量呈几何指数增长。
2007年4月1日,在XX里输入“互联网的发展”这样的关键词进行搜索,找到相关网页约1,170,000篇。
增长m,到2003年3月全球用户量最大的搜索引擎Google已索引了30.83亿个网页;2001年4月中国互联网络信息中心(CNNIC)开展了中国互联网络信息资源数量调查,估测到国内网页数量约为1.59亿个;2002年12月北大天网搜索引擎索引到国内静态网页1.05亿个(不包括通过提交查询词动态生成的网页)。
互联网的发展,使得越来越多的人使用网络来娱乐与办公。
中国互联网络信息中心(CNNIC)公布的中国第十次互联网发展统计报告显示,截至到2002年6月底,我国有网民近4500万,预计到2005年将达到1亿。
如果想知道现在最新的电脑配件价格,不必亲自去电脑城,上网上查价系统找一下就行了;如果想知道怎么样从广州火车站坐到华南农业大学,上坐车网找一下就行了;如果想知道几小时前世界上发生了什么事情,上网看一下最新的新闻就行了……
互联网的发展给我们带来了很多的方便。
但互联网上信息的爆炸性发展,却使得我们越来越难找到我们正真需要的东西。
搜索引擎正是在这样的背景下产生的。
很多人也会遇到过这样的情况。
想找一个想要的信息,在网上找了半天,点击了很多的链接也没有找到想要找的东西。
如果用XX或google来找,不用几秒就可以找到很多相关的资料。
XX与google的上市,在一夜间成就了很多百万富翁,也把世人的眼光都吸向搜索引擎的研究。
搜索引擎在互联网上面给人提供了很大的方便。
很多人在每搜索引擎的时候都觉得它不可思议。
为什么搜索引擎可以这么快在这么多的网页里找出想要的结果?
其中的功劳就离不开信息的搜集这一功能。
二信息搜索技术的概述
信息的搜集系统用在搜索引擎上叫“爬虫”,也叫“蜘蛛”。
它的功能就是把网络上海洋般的信息收集起来,提供给搜索引擎使用。
它的发展与搜索引擎的发展是分不开的。
2.1什么是搜索引擎信息搜索技术
互联网上的网页是通过一个一个的超链接连接起来的。
人们在游览网页的时候,可以从其中的一个网页跳到不同的网页,从其中的一个站点跳到不同的站点,这些功能都是通过超链接来实现的。
搜索引擎信息搜索技术也是利用网页的这些特点,对网络上的信息进行收集并提供给搜索引擎使用。
搜索引擎信息搜索系统是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。
2.2搜索引擎信息搜索技术的发展历吏
在互联网发展初期,网站相对较少,信息查找比较容易。
然而伴随互联网爆炸性的发展,普通网络用户想找到所需的资料简直如同大海捞针,这时为满足大众信息检索需求的专业搜索网站便应运而生了。
现代意义上的搜索引擎的祖先,是1990年由蒙特利尔大学学生Alan Emtage发明的Archie。
虽然当时World Wide Web还未出现,但网络中文件传输还是相当频繁的,而且由于大量的文件散布在各个分散的FTP主机中,查询起来非常不便,因此Alan Emtage想到了开发一个可以以文件名查找文件的系统,于是便有了Archie。
Archie工作原理与现在的搜索引擎已经很接近,它依靠脚本程序自动搜索网上的文件,然后对有关信息进行索引,供使用者以一定的表达式查询。
由于Archie深受用户欢迎,受其启发,美国内华达System Computing Services大学于1993年开发了另一个与之非常相似的搜索工具,不过此时的搜索工具除了索引文件外,已能检索网页。
当时,“机器人”一词在编程者中十分流行。
电脑“机器人”(Computer Robot)是指某个能以人类无法达到的速度不间断地执行某项任务的软件程序。
由于专门用于检索信息的“机器人”程序象蜘蛛一样在网络间爬来爬去,因此,搜索引擎的“机器人”程序就被称为“蜘蛛”程序。
世界上第一个用于监测互联网发展规模的“机器人”程序是Matthew Gray开发的World wide Web Wanderer。
刚开始它只用来统计互联网上的服务器数量,后来则发展为能够检索网站域名。
与Wanderer相对应,Martin Koster于1993年10月创建了ALIWEB,它是Archie的HTTP版本。
ALIWEB不使用“机器人”程序,而是靠网站主动提交信息来建立自己的链接索引,类似于现在我们熟知的Yahoo。
随着互联网的迅速发展,使得检索所有新出现的网页变得越来越困难,因此,在Matthew Gray的Wanderer基础上,一些编程者将传统的“蜘蛛”程序工作原理作了些改进。
其设想是,既然所有网页都可能有连向其他网站的链接,那么从跟踪一个网站的链接开始,就有可能检索整个互联网。
到1993年底,一些基于此原理的搜索引擎开始纷纷涌现,其中以JumpStation、The World Wide Web Worm(Goto的前身,也就是今天Overture),和Repository-Based Software Engineering (RBSE) spider最负盛名。
然而JumpStation和WWW Worm只是以搜索工具在数据库中找到匹配信息的先后次序排列搜索结果,因此毫无信息关联度可言。
而RBSE是第一个在搜索结果排列中引入关键字串匹配程度概念的引擎。
最早现代意义上的搜索引擎出现于1994年7月。
当时Michael Mauldin将John Leavitt的蜘蛛程序接入到其索引程序中,创建了大家现在熟知的Lycos。
同年4月,斯坦福(Stanford)大学的两名博士生,David Filo和美籍华人杨致远(Gerry Yang)共同创办了超级目录索引Yahoo,并成功地使搜索引擎的概念深入人心。
从此搜索引擎进入了高速发展时期。
目前,互联网上有名有姓的搜索引擎已达数百家,其检索的信息量也与从前不可同日而语。
比如最近风头正劲的Google,其数据库中存放的网页已达30亿之巨!
随着互联网规模的急剧膨胀,一家搜索引擎光靠自己单打独斗已无法适应目前的市场状况,因此现在搜索引擎之间开始出现了分工协作,并有了专业的搜索引擎技术和搜索数据库服务提供商。
象国外的Inktomi,它本身并不是直接面向用户的搜索引擎,但向包括Overture(原GoTo)、LookSmart、MSN、HotBot等在内的其他搜索引擎提供全文网页搜索服务。
国内的XX也属于这一类(注),搜狐和新浪用的就是它的技术。
因此从这个意义上说,它们是搜索引擎的搜索引擎。
2.3 信息搜索器的基本框架
通用的信息搜索器工作流程为从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。
通用的信息搜索器框架如图1所示。
专用搜集器的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。
然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。
另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于专用信息搜索器来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。
专用的搜集器流程如图2所示。
2.4 如何评价信息搜索的性能
搜索引擎信息搜索的性能都是用收集信息的“全率”,“准确率”,“覆盖率”,“更新速度”,“每秒多少字节”等来描述的,但由于Internet网络上存储的信息浩如烟海,且始终处于动态变化之中,这使得大多数传统的信息搜索性能指标难以量化,如“查全率”就无法计量,这是因为整个互联网上相关文献信息总量处于动态变化之中,所以难以计算;“准确率”也难以实际操作,这是因为对大多数课题来说,搜索结果的返回数都比较大,相关性判断的工作量非常大,这就使得传统的“查准率”判断不具有现实可操作性;“每秒多少字节”不能得到一致的、准确的数据,同一课题在不同的时间段或不同的地点,“每秒多少字节”都会不同,这是因为它受到通讯设备、网络拥挤程度等外部因素的影响所致。
虽然很难用准确的指标来衡量一个信息搜索器的性能,但一个好的信息搜索器在设计时应该考虑下面的几件事:
1】信息搜索器应具有高度可配置性。
2】信息搜索器可以解析抓到的网页里的链接
3】信息搜索器有简单的存储配置
4】信息搜索器拥有智能的根据网页更新分析功能
5】信息搜索器的效率相当的高
三现有信息搜索器的介绍
现有世界上比较出名的信息搜索器有Google的信息搜索器:
Googlebot,XX的信息搜索器:
baiduspider,Yahoo的信息搜索器:
YahooSlurp,MSN的信息搜索器:
Msnbot,Altavista的信息搜索器:
Scooter,Lycos的信息搜索器:
Lycos_Spider_(T-Rex),Alltheweb的信息搜索器:
FAST-WebCrawler/,INKTOMI的信息搜索器:
Slurp。
信息搜索器分为通用的和专用的两种类型。
通用的信息搜索器,搜集的信息量多,泛围广。
例如传统的通用搜索引擎AltaVista,Yahoo!
和Google等,作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南,使用的都是通用的信息搜索器。
专用的信息搜索器并不追求大的覆盖,而将目标定为抓取与某一特定主题内容相关的网页,为面向主题的用户查询准备数据资源。
通常专用信息搜索器在某一领域更能提供精确的结果。
3.1几个著名信息搜索器的介绍
3.1.1Google的Googlebot特点及评价
Google成立于1997年,几年间迅速发展成为目前规模最大的搜索引擎,并向Yahoo、AOL等其他目录索引和搜索引擎提供后台网页查询服务。
目前Google每天处理的搜索请求已达2亿次!
而且这一数字还在不断增长。
Google数据库存有30亿个Web文件。
属于全文(Full Text)搜索引擎。
Google提供常规及高级搜索功能。
在高级搜索中,用户可限制某一搜索必须包含或排除特定的关键词或短语。
该引擎允许用户定制搜索结果页面所含信息条目数量,可从10到100条任选。
提供网站内部查询和横向相关查询。
Google还提供特别主题搜索,如:
Apple Macintosh, BSD Unix, Linux和大学院校搜索等。
Google搜索引擎作为收集全球网站最多的搜索引擎之一,信息采集方式是利用蜘蛛程序(Googlebot)以某种方法自动地在互联网中搜集和发现信息,并由索引器为搜集到的信息建立索引,从而为用户提供面向网页的全文检索服务,提供基本查询和高级搜索两种检索功能。
Googlebot属于非常活跃的网站扫描工具。
Google一般每隔28天派出“蜘蛛”程序检索现有网站一定IP地址范围内的新网站。
登录Google的周期一般为3个星期(从提交网站到被索引)。
不足之处是其数据的更新速度无法进一步提高。
由于数据量庞大,使Google搜索的数据更新无法早于30天,在一定程度上影响了用户对信息的时效需求。
3.1.2Baidu的baiduspider介绍
XX公司是1999年底由李彦宏先生和徐勇先生在美国硅谷成立的,是中国互联网领先的软件技术提供商和平台运营商。
XX的起名,来自于“众里寻她千XX”的灵感,它寄托着XX公司对自身技术的信心。
XX搜索引擎的搜索范围遍及中国大陆、港澳台、新加坡等华语地区及北美、欧洲部分网站,标引项目主要是网页标题、网址、网页大小、网页日期、网页语言、网页摘要等。
它的检索方式采用关键词检索,并且支持二次检索和相关检索、精确检索、字段检索。
检索结果能标示丰富的网页属性(如标题、网址、时间、大小、编码、摘要等),并突出用户的查询串,便于用户判断是否阅读原文。
此外,检索结果还采用超链接分析、内容相关度评价、按相关性排序等技术。
baiduspider是XX搜索引擎的一个自动程序。
它的作用是访问互联网上的html网页,建立索引数据库,使用户能在XX搜索引擎中搜索到您网站的网页。
baiduspider会自动根据服务器的负载能力调节访问密度。
在连续访问一段时间后,baiduspider会暂停一会,以防止增大服务器的访问压力。
所以在一般情况下,baiduspider对您网站的服务器不会造成过大压力。
对于网站上新产生的或者持续更新的页面,baiduspider会持续抓取。
因为搜索引擎索引数据库的更新需要时间。
虽然baiduspider已经停止访问某些网站上的网页,但XX搜索引擎数据库中已经建立的网页索引信息,可能需要二至四周才会清除。
3.1.3雅虎的(YahooSlurp)的特点及评价
雅虎是1995年由美籍华裔杨致远博士与其同事在斯坦福大学研制出来的搜索引擎。
它现在提供的服务包括拍卖、购物、开设商店、个人免费电子邮箱、聊天和新闻等多种网络服务。
Yahoo的人工索引分类数据库保持了库内数据质量较高、冗余信息较少的优点,同时,它收录了全球咨询网上数以万计的中文网址,以14个类别排列,每个大类下面又分若干子类。
信息采集方式由索引人员用人工方式建立并更新,鼓励用户利用联机表格递交自己的网页地址,用人工和Yahoo的网络机器人不定期地在Web的“Whatisnew?
”网站上发现新文件。
Yahoo对收集到的信息要进行严格的审核和分类。
YahooSlurp收录网页经过筛选和系统组织,质量较高,条理性较强,检索结果接近用户的信息需求。
缺点是采集信息的速度远远比不上网络资源的增长,因此检索的数量有限。
3.2通用信息搜索器类
通用搜索器目标是尽可能大的网络覆盖率,尽量搜集多的结果。
例如:
Googlebot,baiduspider都为通用的搜索器。
通用搜索器能覆盖很多的内容,提供的结果也会很多,但也存在着一定的局限性,如:
(1)不同领域、不同背景的用户往往具有不同的检索目的和需求,通用搜索器所搜索的结果包含大量用户不关心的网页。
(2)通用搜索器的目标是尽可能大的网络覆盖率,有限的搜索服务器资源与无限的网络数据资源之间的矛盾将进一步加深。
(3)万维网数据形式的丰富和网络技术的不断发展,图片、数据库、音频/视频多媒体等不同数据大量出现,通用搜索器往往对这些信息含量密集且具有一定结构的数据无能为力,不能很好地发现和获取。
(4)通用搜索器大多都是不加分类地搜收信息,很难为需要某一领域信息的用户提供满意的结果。
为了解决上述问题,定向抓取相关网页资源的专用搜索器应运而生。
专用搜索器是一个自动下载网页的程序,它根据既定的抓取目标,有选择的访问万维网上的网页与相关的链接,获取所需要的信息。
与通用信息搜索器(generalpurposewebcrawler)不同,专用搜索器并不追求大的覆盖,而将目标定为抓取与某一特定主题内容相关的网页,为面向主题的用户查询准备数据资源。
3.3专用信息搜索器类
专用信息搜索器能以某一专题或学科领域的Internet网络信息资源库为目标,智能地在互联网上搜集符合这一专题或学科需要的信息资源,为包括学科信息门户、专业信息机构、特定行业领域、公司信息中心、行业专家等等在内的信息用户,提供整套的网络信息资源解决方案。
专用信息搜索器需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。
然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止,另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于专用信息搜索器来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。
相对于通用网络爬虫,聚焦爬虫还需要解决三个主要问题:
对抓取目标的描述或定义
现有专用信息搜索器对抓取目标的描述可分为基于目标网页特征、基于目标数据模式和基于领域概念3种。
基于目标网页特征的信息搜索器所抓取、存储并索引的对象一般为网站或网页。
具体的方法根据种子样本的获取方式可以分为:
a预先给定的初始搜索种子样本;b预先给定的网页分类目录和与分类目录对应的种子样本,如Yahoo!
分类结构等;通过用户行为确定的搜索目标样例。
其中,网页特征可以是网页的内容特征,也可以是网页的链接结构特征,等等。
对网页或数据的分析与过滤
对网页或数据的分析与过滤的方法目前主要有:
a基于链接的过滤方法;b基于关键词出现次数的统计过滤方法;c基于本体语义的过滤方法。
这些过滤方法各有优缺点,目前通用的做法是根据网页中的关键词判定.但由于存在一词多义及一义多词的现象,这种基于关键词的判定策略已被证实精确度不高,会遗漏许多相关页面或添加许多噪音页面。
基于本体语义过滤能提供比较精确的结果,但运算量大,对信息量十分大的互联网来说,这一缺点有点难以接受。
四信息搜索器相关技术
每个行业都会有相应的规测来规范,信息搜索器也一样,它由一个叫robots.txt文件来规范搜索器的行为。
几乎所有的搜索引擎信息搜索器都遵循robots.txt给出的搜索规则,协议规定搜索引擎信息搜索器进入某个网站的入口即是该网站的robots.txt,当然,前提是该网站存在此文件。
信息搜索器在进行搜索信息的时候会遇到很多的问题要解决。
例如:
怎么样更快知道当前页是否更新过,怎么样知道提交的链接有没有重定向,获得内容的编码问题等等。
4.1robots.txt介绍
信息搜索器需要抓取网页,不同于一般的访问,如果控制不好,则会引起网站服务器负担过重。
每个网络蜘蛛都有自己的名字,在抓取网页的时候,都会向网站标明自己的身份。
信息搜索器在抓取网页的时候会发送一个请求,这个请求中就有一个字段为User-agent,用于标识此信息搜索器的身份。
例如Google信息搜索器的标识为GoogleBot,Baidu信息搜索器的标识为BaiDuSpider,Yahoo信息搜索器的标识为InktomiSlurp。
如果在网站上有访问日志记录,网站管理员就能知道,哪些搜索引擎的网络蜘蛛过来过,什么时候过来的,以及读了多少数据等等。
如果网站管理员发现某个信息搜索器有问题,就通过其标识来和其所有者联系。
信息搜索器进入一个网站,一般会访问一个特殊的文本文件Robots.txt,这个文件一般放在网站服务器的根目录下,网站管理员可以通过robots.txt来定义哪些目录信息搜索器不能访问,或者哪些目录对于某些特定的信息搜索器不能访问。
例如有些网站的可执行文件目录和临时文件目录不希望被搜索引擎信息搜索器搜索到,那么网站管理员就可以把这些目录定义为拒绝访问目录。
这就是大家在网络上常看到的“拒绝Robots访问标准”(Robots Exclusion Standard)。
下面简称RES。
Robots.txt文件的格式比较特殊,它由记录组成。
这些记录通过空行分开。
其中每条记录均由两个域组成:
1)一个User-Agent(用户代理)字符串行;2)若干Disallow字符串行。
记录格式为:
":
"
下面分别对这两个域做进一步说明。
1)User-agent(用户代理):
User-agent行(用户代理行)用于指定搜索引擎robot的名字,以Google的检索程序Googlebot为例,有:
User-agent:
Googlebot
一个robots.txt中至少要有一条User-agent记录。
如果有多条User-agent记录,则说明有多个robot会受到RES标准的限制。
当然了,如果要指定所有的robot,只需用一个通配符"*"就搞定了,即:
User-agent:
*
2)Disallow(拒绝访问声明):
在Robots.txt文件中,每条记录的第二个域是Disallow:
指令行。
这些Disallow行声明了该网站中不希望被访问的文件和(或)目录。
例如"Disallow:
email.htm"对文件的访问进行了声明,禁止Spiders下载网站上的email.htm文件。
而"Disallow:
/cgi-bin/"则对cgi-bin目录的访问进行了声明,拒绝Spiders进入该目录及其子目录。
Disallow声明行还具有通配符功能。
例如上例中"Disallow:
/cgi-bin/"声明了拒绝搜索引擎对cgi-bin目录及其子目录的访问,而"Disallow:
/bob"则拒绝搜索引擎对/bob.html和/bob/indes.html的访问(即无论是名为bob的文件还是名为bob的目录下的文件都不允许搜索引擎访问)。
Disallow记录如果留空,则说明该网站的所有部分都向搜索引擎开放。
在robots.txt文件中,凡以"#"开头的行,均被视为注解内容,这和UNIX中的惯例是一样的。
但需要注意两个问题:
1)RES标准允许将注解内容放在指示行的末尾,但这种格式并不是所有的Spiders都能够支持。
譬如,并不是所有的Spi