基于Nutch与Lucene构建网络搜索引擎.docx
- 文档编号:9256137
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:39
- 大小:613KB
基于Nutch与Lucene构建网络搜索引擎.docx
《基于Nutch与Lucene构建网络搜索引擎.docx》由会员分享,可在线阅读,更多相关《基于Nutch与Lucene构建网络搜索引擎.docx(39页珍藏版)》请在冰豆网上搜索。
基于Nutch与Lucene构建网络搜索引擎
摘要
随着互联网的不断发展,网络搜索在人们平时上网的时候起到了至关重要的作用,在网络搜索中搜索引擎则扮演者最关键的角色,搜索引擎是一款特别的软件系统,他能够从互联网中自动搜索信息,并为用户提供服务。
在搜索引擎开发这个领域,Lucence系统是其他系统无法替代的,并且由于此系统是开源的,目前广泛用于全文搜索引擎的项目中。
本课题就是通过Nutch与Lucene构建一个网络搜索引擎,学习网络搜索引擎技术。
关键词:
搜索引擎,中文分词,Nutch,爬取,索引,Lucene
ABSTRACT
WiththecontinuousdevelopmentoftheInternet.SearchusuallywhentheInternetisveryimportant.Searchisthemostimportantsearchengine.Thesearchengineisaspecialsoftwaresystem.HewasabletosearchforinformationfromtheInternetautomatically.Andtoprovideservicesforusers.Inthefieldofsearchenginedevelopment.Lucencesystemcannotbereplaced.Andbecausethissystemhasbeenopen.Itwidelyusedforfull-textsearchengineproject.TheissueistobuildanetworkbyNutchandLucenesearchengine.Learningnetworksearchenginetechnology.
KeyWords:
Search,Engine,ChineseWordSegmentation,Nutch,Crawling,Search,Lucene
目录
第1章引言1
1.1搜索引擎的发展背景1
1.2项目背景2
1.3项目介绍3
1.4小结3
第2章搜索引擎简介4
2.1搜索引擎概述4
2.2搜索引擎的搜索5
2.3搜索引擎的分类5
2.4现今网络中主流的一些搜索引擎介绍7
2.5小结8
第3章搜索引擎的工作原理9
3.1搜索引擎技术框架9
3.2搜索引擎的原理9
3.3中文分词12
3.3.1中文分词算法13
3.3.2中文分词算法工具17
3.4Nutch19
3.4.1Nutch概述19
3.4.2Nutch结构19
3.4.3Nutch的工作原理21
3.5Nutch的优点22
3.6Nutch和Lucene23
3.7小结24
第4章系统分析与设计25
4.1系统需求分析25
4.1.1系统定位25
4.1.2系统结构分析25
4.2小结26
第5章Nutch搜索引擎系统实现27
5.1开发环境27
5.2准备工作27
5.3详细步骤28
5.3.1配置过程28
5.3.2爬取部分30
5.3.3搜索部分(成果展示)31
第6章总结33
参考文献34
致谢35
外文资料原文36
译文37
第1章引言
1.1搜索引擎的发展背景
当今是科学发展日新月异、不断发展的社会,网络更是发展的飞快,随着网络的飞速发展,现在已经成为人们生活中必不可少的一部分,网络搜索的重要性不言而喻,所以搜索引擎的重要性更是重中之重。
现如今,XX、谷歌等搜索网站的巨大成功,使得搜索引擎这一块更加受到人们的关注,从最初的Google、Yahoo到现今的XX、Sogou、搜搜等,搜索引擎愈来愈多,服务也更加全面,不光是这些专门做搜索引擎的公司,很多网站也在加入检索功能,用来满足用户的需要,各个企业同样也是需要用全文检索等功能来加强对自己企业的管理,由此可见,网络搜索引擎的重要性。
在互联网发展的初期,网站相对较少,信息的查找较容易。
然而伴随互联网飞速的发展,普通网络用户想找到所需的资料简直如同大海捞针,这时为满足大众信息检索需求的专业搜索网站便应运而生了。
现代意义上的搜索引擎的鼻祖,是1990年由蒙特利尔大学学生AlanEmtage发明的Archie。
虽然当时WorldWideWeb还未出现,但网络中文件传输还是相当频繁的,而且由于大量的文件散布在各个分散的FTP主机中,查询起来非常不便,因此Alan想到了开发一个可以以文件名查找文件的系统,于是便有了Archie。
Archie工作原理与现在的搜索引擎已经很接近,它依靠脚本程序自动搜索网上的文件,然后对有关信息进行索引,供使用者以一定的表达式查询。
由于Archie深受用户欢迎,受其启发,美国内华达SystemComputingServices大学于1993年开发了另一个与之非常相似的搜索工具,不过此时的搜索工具除了索引文件外,已能检索网页。
当时,“机器人”一词在编程者中非常流行。
电脑“机器人”是指某个能以人类无法达到的速度不间断地执行某项任务的软件程序。
由于专门用于检索信息的“机器人”程序如同蜘蛛一样在网络间爬来爬去,所以,搜索引擎的“机器人”程序就被称为“蜘蛛”程序。
世界上第一个用于监测互联网发展规模的“机器人”程序是MatthewGray开发的WorldwideWebWanderer。
刚开始它只用来统计互联网上的服务器数量,后来则发展为能够检索网站域名。
与Wanderer相对应,MartinKoster于1993年10月创建了ALIWEB,它是Archie的HTTP版本。
ALIWEB不使用“机器人”程序,而是靠网站主动提交信息来建立自己的链接索引,类似于现在我们熟知的Yahoo。
随着互联网的迅速发展,使得检索所有新出现的网页变得越来越困难,因此,在MatthewGray的Wanderer基础上,一些编程者将传统的“蜘蛛”程序工作原理作了些改进。
其设想是,既然所有网页都可能有连向其他网站的链接,那么从跟踪一个网站的链接开始,就有可能检索整个互联网。
到1993年底,一些基于此原理的搜索引擎开始纷纷涌现,其中以JumpStation、TheWorldWideWebWorm(Goto的前身,也就是今天Overture),和Repository-BasedSoftwareEngineering(RBSE)spider最负盛名。
然而JumpStation和WWWWorm只是以搜索工具在数据库中找到匹配信息的先后次序排列搜索结果,因此毫无信息关联度可言。
而RBSE是第一个在搜索结果排列中引入关键字串匹配程度概念的引擎。
最早现代意义上的搜索引擎出现于1994年7月。
当时MichaelMauldin将JohnLeavitt的蜘蛛程序接入到其索引程序中,创建了大家现在熟知的Lycos。
同年4月,斯坦福(Stanford)大学的两名博士生,DavidFilo和美籍华人杨致远(GerryYang)共同创办了超级目录索引Yahoo,并成功地使搜索引擎的概念深入人心。
从此搜索引擎进入了高速发展时期。
目前,互联网上有名有姓的搜索引擎已达数百家,其检索的信息量也与从前不可同日而语。
比如最近风头正劲的Google,其数据库中存放的网页已达30亿之巨!
随着互联网规模的急剧膨胀,一家搜索引擎光靠自己单打独斗已无法适应目前的市场状况,因此现在搜索引擎之间开始出现了分工协作,并有了专业的搜索引擎技术和搜索数据库服务提供商。
象国外的Inktomi(已被Yahoo收购),它本身并不是直接面向用户的搜索引擎,但向包括Overture(原GoTo,已被Yahoo收购)、LookSmart、MSN、HotBot等在内的其他搜索引擎提供全文网页搜索服务。
国内的XX也属于这一类,搜狐和新浪用的就是它的技术。
因此从这个意义上说,它们是搜索引擎的搜索引擎。
搜索引擎是近20余年来,互联网内发展最为迅速的领域之一。
这种变化不仅仅表现在搜索技术的突飞猛进和网络经济的巨大推动力上,搜索引擎其自身的合纵连横、兴衰起伏也是精彩纷呈,这也代表了搜索引擎和人们的生活息息相关,体现了搜索引擎的重要所在。
1.2项目背景
对于我个人,选择这个课题的原因,一是在于通过本课题,对于搜索引擎有一个了解,学习网络搜索引擎构建的技术,提高自己对于这方面的知识,还有一个就是在于通过对网络搜索引擎的学习,在以后的学习、生活和工作中能够更加游刃有余,对这些网络相关的开发工作有一个大致的了解。
由于之前在选毕业设计之前对网络搜索引擎并不了解,所以在前期的准备过程中遇到过很多困难,但这对于我个人来说是一个不小的考验,在不断的查询各种资料和文献中,对网络搜索引擎有了初步的了解,这对于我在之后对于毕业设计的完成中有了非常关键的一步。
1.3项目介绍
由于本课题是基于Nutch与Lucene构建网络搜索引擎,使用的Nutch是一个开源Java实现的搜索引擎。
它提供了我们运行自己的搜索引擎所需的全部工具。
包括全文搜索和Web爬虫,尽管Web搜索是漫游Internet的基本要求,但目前web搜索引擎的数目却在下降.并且这很有可能进一步演变成为一个公司垄断了几乎所有的web搜索为其谋取商业利益.这显然不利于广大Internet用户。
由于Lucene不是完整的应用程序,而是一个全文检索的一个软件库,所以Nutch就应运而生了,与lucene不同的是Nutch是一个完整的JAVA应用系统,以lucene为基础,实现搜索引擎的应用。
本课题就是通过使用Nutch,构建搜索引擎。
1.4小结
本章简单的介绍了搜索引擎的概况和选这门课的原因,在此期间,对搜索引擎的了解有了很大的进步,经过不断的查看各个地方的文献以外,也解决了许多困难,其中包括初期对搜索引擎全无概念,到现在有了一个初步的认识,对我自己来说也是个质的飞跃。
本章介绍的东西不多,万事开头难,做好了开头的准备,为接下来的几张打好基础。
第2章搜索引擎简介
2.1搜索引擎概述
自从1994年基于Web的搜索引擎出现以来,搜索引擎不断占据了人们在网络中的需求度,搜索引擎是一款网络化的网络系统,能够提供大量的网络检索功能,为用户提供了网络资源的查询和引导,搜索引擎基本作用就是对网站和网页的内容进行信息导航,如图2-1所示
图2-1搜索引擎的框架
搜索引擎工作是搜集互联网中的资源和信息,发现新的网站和网页,经过一系列的抓取和分析,储存相应的信息副本,在此基础上,进一步进行处理,并为用户提供检索服务,从而起到导航的目的。
Lucene的作者是资深的全文索引/检索方面的专家,最开始发布在他本人的主页上,2001年10月贡献给APACHE,成为APACHE基金jakarta的一个子项目。
目前,lucene广泛用于全文索引/检索的项目中。
面对已经存在的商业全文检索引擎,Lucene也具有相当的优势。
首先,它的开发源代码发行方式,在此基础上程序员不仅仅可以充分的利用Lucene所提供的强大功能,而且可以深入细致的学习到全文检索引擎制作技术和面相对象编程的实践,进而在此基础上根据应用的实际情况编写出更好的更适合当前应用的全文检索引擎。
在这一点上,商业软件的灵活性远远不及Lucene。
其次,Lucene秉承了开放源代码一贯的架构优良的优势,设计了一个合理而极具扩充能力的面向对象架构,程序员可以在Lucene的基础上扩充各种功能,比如扩充中文处理能力,从文本扩充到HTML、PDF等等文本格式的处理,编写这些扩展的功能不仅仅不复杂,而且由于Lucene恰当合理的对系统设备做了程序上的抽象,扩展的功能也能轻易的达到跨平台的能力。
最后,转移到apache软件基金会后,借助于apache软件基金会的网络平台,程序员可以方便的和开发者、其它程序员交流,促成资源的共享,甚至直接获得已经编写完备的扩充功能。
最后,虽然Lucene使用Java语言写成,但是开放源代码社区的程序员正在不懈的将之使用各种传统语言实现,在遵守Lucene索引文件格式的基础上,使得Lucene能够运行在各种各样的平台上,系统管理员可以根据当前的平台适合的语言来合理的选择。
2.2搜索引擎的搜索
搜索引擎检索的时候,检索出来的每一条内容都代表了一个网页,每一条结果都包含了3个部分的内容用来描述所代表网页的基本信息,每一部分的内容是:
a)从网页中获得的标题。
通常分析网页HTML源代码,从
b)网页内容摘要。
通过一定的算法,从网页正文中找到网页整体含义的句子或者词汇。
c)网页的连接地址和附属信息,搜索得到的结果是完成进一步导航的依据。
通过提供的地址和链接,用户可以跳转到甘心去的目标网页进一步浏览。
网页时间等附属信息作为用户快速判断信息有效性的参考。
以上就是搜索引擎在网页搜索出来的时候所做的事情,比如在搜索栏中输入“123”,搜索引擎就回按照上述的方法进行搜索,然后再回显到我们的电脑屏幕上。
2.3搜索引擎的分类
经过多年的发展,搜索引擎的技术日趋成熟,为了提供更好的服务,不同的需求造就了不同类型的搜索引擎。
1.全文索引
全文搜索引擎是目前广泛应用的主流搜索引擎,国外代表有Google,国内则有著名的XX。
它们从互联网提取各个网站的信息,建立起数据库,并能检索与用户查询条件相匹配的记录,按一定的排列顺序返回结果。
根据搜索结果来源的不同,全文搜索引擎可以分为两类,一类拥有自己的检索程序,称“蜘蛛”或者“机器人”,能自建网页数据库,搜索结果直接从自身的数据库中调用,上面提到的Google和XX就属于此类;另一类则是租用其他搜索引擎的数据库,并按自定的格式排列搜索结果,如Lycos搜索引擎。
在搜索引擎分类部分提到过全文搜索引擎从网站提取信息建立网页数据库的概念。
搜索引擎的自动信息搜集功能分两种。
一种是定期搜索,即每隔一段时间(比如Google一般是28天),搜索引擎主动派出“蜘蛛”程序,对一定IP地址范围内的互联网站进行检索,一旦发现新的网站,它会自动提取网站的信息和网址加入自己的数据库。
另一种是提交网站搜索,即网站拥有者主动向搜索引擎提交网址,它在一定时间内(2天到数月不等)定向向你的网站派出“蜘蛛”程序,扫描你的网站并将有关信息存入数据库,以备用户查询。
由于近年来搜索引擎索引规则发生很大变化,主动提交网址并不保证你的网站能进入搜索引擎数据库,目前最好的办法是多获得一些外部链接,让搜索引擎有更多机会找到你并自动将你的网站收录。
当用户以关键词查找信息时,搜索引擎会在数据库中进行搜寻,如果找到与用户要求内容相符的网站,便采用特殊的算法——通常根据网页中关键词的匹配程度、出现的位置、频次、链接质量——计算出各网页的相关度及排名等级,然后根据关联度高低,按顺序将这些网页链接返回给用户。
这种引擎的特点是搜全率比较高。
2.目录索引
虽然有搜索功能,但严格意义上不能称为真正的搜索引擎,只是按目录分类的网站链接列表而已。
用户完全可以按照分类目录找到所需要的信息,不依靠关键词进行查询。
目录索引中最具代表性的莫过于大名鼎鼎的Yahoo、新浪分类目录搜索。
3.元搜索引擎
元搜索引擎接受用户查询请求后,同时在多个搜索引擎上搜索,并将结果返回给用户。
著名的元搜索引擎有InfoSpace、Dogpile、Vivisimo等,中文元搜索引擎中具代表性的是搜星搜索引擎。
在搜索结果排列方面,有的直接按来源排列搜索结果,如Dogpile;有的则按自定的规则将结果重新排列组合,如Vivisimo。
4.垂直搜索引擎
垂直搜索引擎为2006年后逐步兴起的一类搜索引擎。
不同于通用的网页搜索引擎,垂直搜索专注于特定的搜索领域和搜索需求(例如:
机票搜索、旅游搜索、生活搜索、小说搜索、视频搜索等等),在其特定的搜索领域有更好的用户体验。
相比通用搜索动辄数千台检索服务器,垂直搜索需要的硬件成本低、用户需求特定、查询的方式多样。
5.集合式搜索引擎
集合式搜索引擎:
该搜索引擎类似元搜索引擎,区别在于它并非同时调用多个搜索引擎进行搜索,而是由用户从提供的若干搜索引擎中选择,如HotBot在2002年底推出的搜索引擎。
2.4现今网络中主流的一些搜索引擎介绍
一个优秀的搜索引擎厂商不仅在技术上非常突出,在商业运营各方面也做得非常到位,现在中国最主流的搜索引擎当数百“XX”全球性的搜索引擎则是如“google”“yahoo”“AltaVista”,这三个,我就简但介绍一下最熟悉的“baidu”和“google”。
1.XX搜索引擎
XX搜索引擎于1999年底在美国硅谷由李彦宏和徐勇创建。
致力于向人们提供“简单,可依赖”的信息获取方式。
“XX”二字源于中国宋朝词人辛弃疾的《青玉案·元夕》诗句:
“众里寻他千XX”,象征着XX对中文信息检索技术的执著追求。
XX拥有超链分析专利实现了与Google的Pagerank类似的自动排序功能。
XX公司2005年在纳斯达克成功上市,股价超过100美元,是目前国内最大的商业化全文搜索引擎。
图2-2XX界面
2.谷歌搜索引擎
GOOGLE搜索引擎是由两位斯坦福大学的博士LARRYPAGE和SERGEYBRIN在1998年创立的,Google采用了以网页级别为基础的算法(Pagerank),搜索性能非常强大,由于Google的出现打破了Yahoo的垄断格局。
几年间发展为目前规模最大的。
谷歌每天需要处理2亿次搜索请求,数据库存有30亿个WEB文件。
图2-3谷歌界面
2.5小结
本章的内容介绍了搜索引擎的一些基础的知识,其中包括搜索引擎的种类和结构,做了一个大致的介绍,在搜索引擎不断完善,不断更新的今天,Lucene的出现起到了不可或缺的作用,集思广益,让搜索引擎未来的发展越来越好。
第3章搜索引擎的工作原理
3.1搜索引擎技术框架
互联网搜索引擎主要有5个环节构成,系统主要模块包括网页信息的抓取、网页内容的分析、网页索引的建立、网页检索结果排序、网页检索工具与接口。
主要功能模块结合其他中文信息处理的信息检索技术,完成整个网页搜索引擎。
如图3-1所示。
图3-1搜索引擎简单技术框架
3.2搜索引擎的原理
搜索引擎分工作分为三个部分。
包括爬取网页程序,索引数据库,从索引数据库调用数据。
第一步:
搜索引擎抓取互联网的网页。
抓取网页的程序我们称之为“蜘蛛”,搜索引擎蜘蛛会按照你的URL进行爬取。
每当搜索蜘蛛爬取一个网页的时候他看到一个新的URL就会顺着这个URL爬下去。
他会把爬取的内容返回到搜索引擎的索引数据库。
蜘蛛的主要作用就是爬取,蜘蛛爬取的是网站程序的代码。
互联网上中文信息资源非常丰富,但由于数据库存储空间有限等许多因素的制约,搜索引擎只能遍历一定数量的网页。
蜘蛛遍历完规定数量的网页后立即停止,同时清空URL队列,再由人工指定或按一定算法从页面信息数据库中提取一定数量的URL作为初始种子URL也,开始新一轮周期的网页遍历。
对于搜索引擎来说,想要抓取互联网上所有的网页是绝对不可能的,从目前情况来看,容量最大的搜索引擎也只不过是抓取了整个网页数量的百分之四十左右。
这其中的原因一方面是抓取技术还有待提高;另一个原因是存储技术和处理技术的问题,如果按照每个页面的平均大小为20K计算(包含图片),100亿网页的容量100x2000G字节,即使能够存储,下载也存在问题(按照一台机器每秒下载20K计算,需要340台机器不停的下载一年时间,才能把所有网页下载完毕)。
同时,由于数据量太大,在提供搜索时也会有效率方面的影响。
因此,许多搜索引擎的网络蜘蛛只是抓取那些重要的网页,而在抓取的时候评价重要性主要的依据是某个网页的链接深度。
抓取网页的时候,网络蜘蛛一般有两种策略:
广度优先和深度优先。
广度优先是指网络蜘蛛会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。
这是最常用的方式,因为这个方法可以让网络蜘蛛并行处理,提高其抓取速度。
深度优先是指网络蜘蛛会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。
这个方法有个优点是网络蜘蛛在设计的时候比较容易。
第二步:
程序爬取的内容返回到索引数据库。
索引数据库对网页信息进行处理,网页分析之后,会对网页进行评价。
如果是网上重复度太多的内容,索引数据库则舍弃这个网页。
每个被收录的网站都会在搜索引擎的索引数据库中有相应的储存。
中文分词一直是中文搜索引擎的关键点,中文和英文差别很大,英文每个单词是用空格分开,而中文一个句子往往是一些词的连结,没有分割符,计算机很难看懂。
目前中文分词方法几乎都是有自己的中文词典,分词时去词典匹配,达到分词目的,分词的好坏,和词典关系很大。
由于中文没有特定的词组边界,因此从特定文本里提取有效的关键词就比英文资料困难很多。
第三步:
索引数据库中排序
当用户输入一个关键词或者是一句话的时候,搜索引擎首先分析这个词或者这句话,他会对用户输入的关键词进行分词,然后在索引数据库中进行相应的关键词排序结果输出。
如图3-2所示
搜索的处理过程是对用户的搜索请求进行满足的过程,通过用户输入搜索键字,服务器对应关键词字典,把搜索关键词转化为wordID,然后在标引库中得到docID列表,对docID列表进行扫描和wordID的匹配,提取满足条件的网页,然后计算网页和关键词的相关度,根据相关度的数值返回前K篇结果(不同的搜索引擎每页的搜索结果数不同)返回给用户。
如果用户查看的第二页或者第多少页,重新进行搜索,把排序结果中在第K+I到2*K的网页组织返回给用户
数据检索模块首先将用户输入的查询项转化成计算机可执行的规范化检索式,再按一定的检索策略先后在索引数据库的缓存、索引数据库中进行匹配,如果仍然没有匹配成功,有的中文搜索引擎还会将用户查询项交给第三方搜索引擎处理或者检索第三方索引数据库,最后将检索到的结果按一定的排序策略进行组织并返回给用户。
中文搜索引擎的检索策略在很大程度上受搜索引擎的页面处理方法影响。
采用字表法标引页面的中文搜索引擎,检索时采用全文检索方式;采用抽词法标引页面的中文搜索引擎,检索时采用主题检索方式,其关键键词一般能比较准确地反映文档的主题。
不同的中文搜索引擎对检索结果的排序策略多不相同,这使得同一个查询项应用不同的中文搜索引擎返回的查询结果排序差异非常明显。
互联网虽然只有一个,但各搜索引擎的能力和偏好不同,所以抓取的网页各不相同,排序算法也各不相同。
大型搜索引擎的数据库储存了互联网上几亿至几十亿的网页索引,数据量达到几千G甚至几万G。
但即使最大的搜索引擎建立超过二十亿网页的索引数据库,也只能占到互联网上普通网页的不到30%,不同搜索引擎之间的网页数据重叠率一般在70%以下。
我们使用不同搜索引擎的重要原因,就是因为它可以分别搜索到不同的内容。
而互联网上有更大量的内容,是搜索引擎无法抓取索引的,也是我们无法用搜索引擎搜索到的。
应该有这个概念:
搜索引擎只能搜到它网页索引数据库里储存的内容。
所以总结来说就是先抓取,再分析,在储存,在排序输出。
图3-2搜索引擎原理流程图
3.3中文分词
在中文搜索引擎中,有个非常重要的一个环节,就是中文分词,因为中文和英文不同,英文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符,虽然英文也同样存在短语的划分问题,不过在
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Nutch Lucene 构建 网络 搜索引擎