基于Lucene与Heritrix的搜索引擎构建本科毕业设计论文Word文件下载.docx
《基于Lucene与Heritrix的搜索引擎构建本科毕业设计论文Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于Lucene与Heritrix的搜索引擎构建本科毕业设计论文Word文件下载.docx(41页珍藏版)》请在冰豆网上搜索。
日期:
年月日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
导师签名:
日期:
注意事项
1.设计(论文)的内容包括:
1)封面(按教务处制定的标准封面格式制作)
2)原创性声明
3)中文摘要(300字左右)、关键词
4)外文摘要、关键词
5)目次页(附件不统一编入)
6)论文主体部分:
引言(或绪论)、正文、结论
7)参考文献
8)致谢
9)附录(对论文支持必要时)
2.论文字数要求:
理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
3.附件包括:
任务书、开题报告、外文译文、译文原文(复印件)。
4.文字、图表要求:
1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写
2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。
图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画
3)毕业论文须用A4单面打印,论文50页以上的双面打印
4)图表应绘制于无格子的页面上
5)软件工程类课题应有程序清单,并提供电子文档
5.装订顺序
1)设计(论文)
2)附件:
按照任务书、开题报告、外文译文、译文原文(复印件)次序装订
指导教师评阅书
指导教师评价:
一、撰写(设计)过程
1、学生在论文(设计)过程中的治学态度、工作精神
□优□良□中□及格□不及格
2、学生掌握专业知识、技能的扎实程度
3、学生综合运用所学知识和专业技能分析和解决问题的能力
4、研究方法的科学性;
技术线路的可行性;
设计方案的合理性
5、完成毕业论文(设计)期间的出勤情况
二、论文(设计)质量
1、论文(设计)的整体结构是否符合撰写规范?
2、是否完成指定的论文(设计)任务(包括装订及附件)?
三、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义
2、论文的观念是否有新意?
设计是否有创意?
3、论文(设计说明书)所体现的整体水平
建议成绩:
(在所选等级前的□内画“√”)
指导教师:
(签名)单位:
(盖章)
年月日
评阅教师评阅书
评阅教师评价:
一、论文(设计)质量
二、论文(设计)水平
评阅教师:
教研室(或答辩小组)及教学系意见
教研室(或答辩小组)评价:
一、答辩过程
1、毕业论文(设计)的基本要点和见解的叙述情况
2、对答辩问题的反应、理解、表达情况
3、学生答辩过程中的精神状态
评定成绩:
教研室主任(或答辩小组组长):
(签名)
教学系意见:
系主任:
摘要
在互联网蓬勃发展的今天,互联网上的信息更是浩如烟海。
人们在享受互联网带来的便利的同时,却面临着一个如何在如此海量的内容中准确、快捷地找到自己所需要的信息的问题,由此互联网搜索引擎应运而生。
本文在对搜索引擎的原理、组成、数据结构和工作流程等方面深入研究的基础上,对搜索引擎的三个核心部分即网络蜘蛛、网页索引和搜索的分析及实现过程进行阐述。
网络蜘蛛部分采用了基于递归和归档机制的Heritrix网络爬虫;
网页索引部分利用开源的Lucene引擎架构设计并实现了一个可复用的、可扩展的索引建立与管理子系统;
搜索部分在Ajax技术支持上,设计并实现了一个灵活、简洁的用户接口。
本系统具有抓取网页、建立和管理索引、建立日志以及搜索信息等功能,具备一定的应用前景。
关键词:
搜索引擎;
中文分词;
索引
TheConstructionofSearchEngineBasedonLuceneandHeritrix
Abstract
ThecontentsontheWebareincreasingexponentiallyastherapiddevelopmentoftheInternet.AproblemhowtoobtaintheusefulinformationfromvastcontentsquicklyandaccuratelyisfacinguswhilepeopleareenjoyingtheconvenienceoftheInternet.ThesolverofthisproblemisWebSearchEngine.
Theanalysisandimplementationprocessofthreebasiccomponentsofsearchengine(Crawler,IndexerandSearcher)isdescribedinthispaperonthebasisoffurtherstudyontheprinciples,composition,datastructureandworkflowofsearchengine.ThecrawlercomponentisimplementedwithHeritrixcrawlerbasedonthemechanismofrecursionandarchiving;
Areusable,extensibleindexestablishmentandmanagementsubsystemaredesignedandimplementedbyopen-sourcepackagenamed“Lucene”intheindexercomponent;
TheSearchercomponentbasedontheAjaxtechnologyisdesignedandrealizedasaflexible,conciseuserinterface.Thesystemhassomefunctions,suchascrawlingwebpage,establishmentandmanagementindex,establishmentlogandsearchinformation,ithasacertainapplicationprospect.
KeyWords:
SearchEngine;
ChineseWordSegmentation;
Index
1绪论
1.1项目背景
1994年左右,万维网(worldwideweb)出现了。
它的开放性和其上信息广泛的可访问性极大的激励了人们创作的积极性。
在短短的十几年间,人类至少在万维网上发布了40亿条的网页,并且现在每天都有数以万计的数量增长。
由于网络上的资源与生俱来的数字化、网络化,这些特性成为了网络信息的双刃剑:
一方面便于我们搜集整理,另一方面也会使我们感到太多蜂拥而至,无所适从。
而搜索引擎的由来要追溯到1990年加拿大的麦吉尔大学,麦吉尔大学的师生为了在分散在FTP资源上找到所需的东西,他们开发了软件Archie。
它通过定期搜索并分析FTP系统中存在的文件名信息,提供查找分布在各个FTP主机中文件的服务。
当Web风靡全球之后,以Web网页为对象的搜索引擎检索系统产生了。
成为人们上网找寻信息的重要手段,通过搜索引擎系统人们可以在浩如烟海的网络中瞬间找到想要找到的信息,并且搜索引擎的智能以及现在网页的特性使得人们只要输入相关的词语就可以找到直接相关的信息。
现今,Google的巨大成功让整个世界都把眼光投入到搜索引擎这个领域中。
仿佛一夜间,各种各样的搜索服务席卷而来。
从最初的Google、Yahoo到现今的Baidu、MSN、中搜、Sogou等,搜索引擎的品牌愈来愈多,服务也越来越丰富。
同时,伴随着Web2.0的普及,网络信息的膨胀速度呈指数急速增长,各种各样的网站都需要为其加入检索功能,以满足用户的需要。
另外,在企业级应用的市场上,全文信息检索的需求也一直在增加,各种文档处理、内容管理软件都需要键入全文检索的功能。
在这种背景下,搜索引擎的技术迅速发展。
各种讨论搜索的文章、杂志、论文铺天盖地,论坛和博客上也有许多相关帖子。
一时间,搜索引擎技术成为最热门的技术之一。
1.2国内外发展现状
网页是因特网的最主要的组成部份,也是人们获取网络信息的最主要的来源,为了方便人们在大量繁杂的网页中找寻自己需要的信息,这类检索工具发展的最快。
一般认为,基于网页的信息检索工具主要有网页搜索引擎和网络分类目录两种。
网页搜索引擎是通过“网络蜘蛛”等网页自动搜寻软件搜索到网页,然后自动给网页上的某些或全部字符做上索引,形成目标摘要格式文件以及网络可访问的数据库,供人们检索网络信息的检索工具。
网络目录则是和搜索引擎完全不同,它不会将整个网络中每个网站的所有页面都放进去,而是由专业人员谨慎地选择网站的首页,将其放入相应的类目中。
网络目录的信息量要比搜索引擎少得多,再加上不同的网络目录分类标准有些混乱,不便人们使用,因此虽然它标引质量比较高,利用它的人还是要比利用搜索引擎的人少的多。
但是由于网络信息的复杂性和网络检索技术的限制,这类检索工具也有着明显的不足:
(1)随着网页数量的迅猛增加,人工无法对其进行有效的分类、索引和利用。
网络用户面对的是数量巨大的未组织信息,简单的关键词搜索,返回的信息数量之大,让用户无法承受。
(2)信息有用性评价困难。
一些站点在网页中大量重复某些关键字,使得容易被某些著名的搜索引擎选中,以期借此提高站点的地位,但事实上却可能没有提供任何对用户有价值的信息。
(3)网络信息日新月异的变更,人们总是期望挑出最新的信息。
然而网络信息时刻变动,实时搜索几乎不可能,就是刚刚浏览过的网页,也随时都有更新、过期、删除的可能。
网络信息检索工具的发展主要体现在进一步改进、完善检索工具和检索技术,以提高检索服务质量,改变网络信息检索不尽如意的地方。
2系统的开发平台及相关技术
该系统开发需要J2EE和J2SE相关技术,开发平台要求合理、方便、快捷,开发环境的选取至关重要,当选取一种相对合理的开发平台时,会提高系统开发效率,并遵循以最低的消耗完成最有价值的工程这一原则。
2.1系统开发平台
本系统的开发平台如下表2.1所示:
表2.1系统开发平台配置
名称
平台
系统开发操作系统:
WindowsXP中文版
系统开发数据库系统:
SQLServer2000个人版sp3
系统开发前台页面设计:
MacromediaDreamweaver8.0
J2EE服务端引擎:
Tomcat6.0
范围系统集成开发工具:
MyEclipse5.5.1GA
Java运行环境:
JDK1.6.0_03
2.2系统开发技术
2.2.1Heritrix网络爬虫简介
Heritrix是一个由Java开发的、开源的Web网络爬虫,用户可以使用它从网络上抓取想要的资源。
Heritrix最出色之处在于它的可扩展性,开发者可以扩展它的各个组件,来实现自己的抓取逻辑。
Heritrix设计成严格按照robots.txt文件的排除指示和METArobots标签。
Heritrix是IA的开放源代码,可扩展的,基于整个Web的,归档网络爬虫工程。
Heritrix工程始于2003年初,IA的目的是开发一个特殊的爬虫,对网上的资源进行归档,建立网络数字图书馆,在过去的6年里,IA已经建立了400TB的数据。
(1)Heritrix1.0.0包含以下关键特性:
①用单个爬虫在多个独立的站点一直不断的进行递归的爬。
②从一个提供的种子进行爬,收集站点内的精确URI和精确主机。
③主要是用广度优先算法进行处理。
④主要部件都是高效的可扩展的。
⑤良好的配置。
(2)Heritrix的局限:
①单实例的爬虫,之间不能进行合作。
②在有限的机器资源的情况下,却要复杂的操作。
③只有官方支持,仅仅在Linux上进行了测试。
④每个爬虫是单独进行工作的,没有对更新进行修订。
⑤在硬件和系统失败时,恢复能力很差。
⑥很少的时间用来优化性能。
2.2.2Lucene技术简介
Lucene是apache软件基金会jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。
Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。
面对已经存在的商业全文检索引擎,Lucene也具有相当的优势。
首先,它的开发源代码发行方式,在此基础上程序员不仅仅可以充分的利用Lucene所提供的强大功能,而且可以深入细致的学习到全文检索引擎制作技术和面相对象编程的实践,进而在此基础上根据应用的实际情况编写出更好的更适合当前应用的全文检索引擎。
在这一点上,商业软件的灵活性远远不及Lucene。
其次,Lucene秉承了开放源代码一贯的架构优良的优势,设计了一个合理而极具扩充能力的面向对象架构,程序员可以在Lucene的基础上扩充各种功能,比如扩充中文处理能力,从文本扩充到HTML、PDF等等文本格式的处理,编写这些扩展的功能不仅仅不复杂,而且由于Lucene恰当合理的对系统设备做了程序上的抽象,扩展的功能也能轻易的达到跨平台的能力。
最后,转移到apache软件基金会后,借助于apache软件基金会的网络平台,程序员可以方便的和开发者、其它程序员交流,促成资源的共享,甚至直接获得已经编写完备的扩充功能。
最后,虽然Lucene使用Java语言写成,但是开放源代码社区的程序员正在不懈的将之使用各种传统语言实现,在遵守Lucene索引文件格式的基础上,使得Lucene能够运行在各种各样的平台上,系统管理员可以根据当前的平台适合的语言来合理的选择。
2.2.3Ajax技术简介
(1)Ajax(AsynchronousJavaScript+XML)的定义
①基于web标准(standards-basedpresentation)XHTML+CSS的表示;
②使用DOM(DocumentObjectModel)进行动态显示及交互;
③使用XML和XSLT进行数据交换及相关操作;
④使用XMLHttpRequest进行异步数据查询、检索;
⑤使用JavaScript将所有的东西绑定在一起。
(2)Ajax核心
Ajax的核心是JavaScript对象XmlHttpRequest。
该对象在InternetExplorer5中首次引入,它是一种支持异步请求的技术。
简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。
(3)使用Ajax可以完成的功能
在创建Web站点时,在客户端执行屏幕更新为用户提供了很大的灵活性。
下面是使用Ajax可以完成的功能:
①动态更新购物车的物品总数,无需用户单击Update并等待服务器重新发送整个页面。
②提升站点的性能,这是通过减少从服务器下载的数据量而实现的。
例如,在某购物车页面,当更新篮子中的一项物品的数量时,会重新载入整个页面,这必须下载整个页面的数据。
如果使用Ajax计算新的总量,服务器只会返回新的总量值,因此所需的带宽仅为原来的百分之一。
消除了每次用户输入时的页面刷新。
例如,在Ajax中,如果用户在分页列表上单击Next,则服务器数据只刷新列表而不是整个页面。
③直接编辑表格数据,而不是要求用户导航到新的页面来编辑数据。
对于Ajax,当用户单击Edit时,可以将静态表格刷新为内容可编辑的表格。
用户单击Done之后,就可以发出一个Ajax请求来更新服务器,并刷新表格,使其包含静态、只读的数据。
(4)Ajax的工作原理
Ajax的工作原理相当于在用户和服务器之间加了—个中间层,使用户操作与服务器响应异步化。
这样把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理,减轻服务器和带宽的负担,从而达到节约ISP的空间及带宽租用成本的目的。
3系统分析与设计
3.1系统需求分析
3.1.1系统架构分析
(1)系统定位
系统定位为用于网页、影视和图片的搜索。
(2)系统结构
系统总体包括三大系统模块:
网络爬虫、索引建立子系统和用户接口子系统。
如图3.1所示。
图3.1系统结构图
①网络爬虫的主要任务是从目标源定时抓取信息资源,比如图片、网页等。
②索引建立子系统主要任务是根据网络爬虫抓取的资源进行分析、正文抽取,利用分词器将提取的资源进行分词、倒排建立索引。
③用户接口子系统的主要任务是为用户提供可搜索接口,用户通过web界面输入词条,向服务器发出请求,服务器经过简单处理将处理后的词条传递给搜索器,再以xml格式传给客户端,客户端利用XmlHttpRequest来接受数据,将数据处理显示给用户。
3.1.2系统用例模型
系统涉及的角色有用户和后台维护人员,用户主要的场景有对想要的信息进行搜索,而后台维护人员的主要场景有抓取资源、维护资源、建立索引、维护索引和维护日志等,以下是对两个角色的部分用例场景的分析:
(1)详述用例:
用户进行影视搜索
主要参与者:
用户
相关人员及兴趣:
用户希望系统能很好的理解自己的意思,并能准确快速的返回自己想要的信息。
维护人员希望系统能够运作良好,尽量快速的给出用户解决方案。
前置条件:
用户可以与服务器良好连接,服务器状态良好
主要成功场景:
①用户进入web界面,输入想要搜索的词
②用户在下拉列表中选择影视
③用户点击搜索按钮,提交请求
④系统进行分析处理,并搜索结果
⑤系统返回并显示结果
⑥用户退出
扩展:
①用户没有输入信息
没有错误提示信息,仍然停留在本页面。
②用户输入空格或制表符
没有错误提示信息,刷新页面。
③用户没有选择影视
系统返回当前选择类型的信息。
④系统失去连接或崩溃
系统提示连接超时
用户等待系统响应,直到恢复正常
⑤系统崩溃
返回错误信息,提示用户系统出现故障,用户退出
(2)详述用例:
后台维护人员建立索引
维护人员
相关人员及其兴趣:
维护人员希望系统能快速方便的完成建立索引任务,并能产生日志,以便维护。
维护人员有可利用资源
①维护人员整理可利用资源,打开索引建立子系统
②维护人员在配置文件中修改资源目录
③配置运行时参数后,点击建立索引
④系统产生索引文件并产生日志
用例场景已经分析出来,下一个阶段是利用用例画出用例图。
这样更加直观显示出参与者与系统的交互流程。
用例图如图3.2所示。
用例图表述如下:
(1)用户进行影视搜索用例产生的用例图系统外参与者为用户,系统事件包括用户选取类型,搜索信息和资源链接。
(2)后台维护人员进行资源抓取用例产生的用例图系统参与者是后台维护人员,系统事件包括定制抓取任务,抓取资源,在抓取资源的过程中涉及到的是外部资源持有者。
(3)后台维护人员建立索引用例产生的用例图主要参与者为后台维护人员,系统事件包括资源预处理、规范化、噪音过滤、正文抽取、索引建立、日