基于Lucene与Heritrix的搜索引擎构建毕业设计论文.docx

上传人:b****6 文档编号:5019224 上传时间:2022-12-12 格式:DOCX 页数:30 大小:208.38KB
下载 相关 举报
基于Lucene与Heritrix的搜索引擎构建毕业设计论文.docx_第1页
第1页 / 共30页
基于Lucene与Heritrix的搜索引擎构建毕业设计论文.docx_第2页
第2页 / 共30页
基于Lucene与Heritrix的搜索引擎构建毕业设计论文.docx_第3页
第3页 / 共30页
基于Lucene与Heritrix的搜索引擎构建毕业设计论文.docx_第4页
第4页 / 共30页
基于Lucene与Heritrix的搜索引擎构建毕业设计论文.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

基于Lucene与Heritrix的搜索引擎构建毕业设计论文.docx

《基于Lucene与Heritrix的搜索引擎构建毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于Lucene与Heritrix的搜索引擎构建毕业设计论文.docx(30页珍藏版)》请在冰豆网上搜索。

基于Lucene与Heritrix的搜索引擎构建毕业设计论文.docx

基于Lucene与Heritrix的搜索引擎构建毕业设计论文

大连民族学院本科毕业设计(论文)

基于Lucene与Heritrix的搜索引擎构建

 

摘要

在互联网蓬勃发展的今天,互联网上的信息更是浩如烟海。

人们在享受互联网带来的便利的同时,却面临着一个如何在如此海量的内容中准确、快捷地找到自己所需要的信息的问题,由此互联网搜索引擎应运而生。

本文在对搜索引擎的原理、组成、数据结构和工作流程等方面深入研究的基础上,对搜索引擎的三个核心部分即网络蜘蛛、网页索引和搜索的分析及实现过程进行阐述。

网络蜘蛛部分采用了基于递归和归档机制的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)后台维护人员建立索引用例产生的用例图主要参与者为后台维护人员,系统事件包括资源预处理、规范化、噪音过滤、正文抽取、索引建立、日志建立和索引维护。

图3.2部分用例语境图

详述用例和用例图已经完成分析,接下来是根据用例来画出系统顺序图。

系统顺序图将系统视为黑盒,注重的是参与者与系统之间的交互过程,对用例场景进行分析如下:

(1)用户进行影视搜索用例中用户和SoBa系统其实就是用户和用户接口子系统的交互,主体为用户和接口子系统,系统顺序图如图3.3所示。

图3.3用户与系统交互的系统顺序图

(2)后台维护人员进行资源抓取用例的主体是后台维护人员和Heritrix爬虫子系统,两者交互过程如图3.4所示。

图3.4维护人员与网络爬虫交互的系统顺序图

(3)后台维护人员建立索引用例的主体是后台维护人员和索引建立子系统,两者交互过程如图3.5所示。

图3.5维护人员与索引建立子系统交互系统顺序图

系统顺序图已经绘制出来,经过分析得出了系统和外部参与者的交互过程,大概的分析出系统应该承担的责任和参与者的责任,在用户和系统之间,用户扮演的角色是把系统当成黑盒来看,只是需要系统给出自己想要的信息,用户的责任只是将词条输入进去,而此时的系统的责任就比较繁忙了,它会首先将信息进行处理,转换成让搜索器认识的词语或单字,这样就可以进行下一项,利用搜索器在索引库中搜索对应的信息,当信息被检索出来,再对结果进行筛选,最后将其放入实体对象封装起来,形成xml格式传给客户端,这就是用户和系统的交互,并对用户和系统内部进行了简单流程分析;在维护人员和系统之间,维护人员责任是建立和维护索引以及日志,对于维护人员的责任就是尽量为系统的进一步工作做准备,并做好维护工作,而系统的责任就是对维护人员选取的资源进行处理、正文抽取、建立索引、维护索引和建立日志。

这些是在这个阶段简单分析出来的过程。

下一阶段是对以上所有信息进行领域模型抽取。

3.1.3系统领域模型

对参与者和系统的交互过程进行领域模型抽取,首先是名词概念抽取:

Term(词条),TermDisposo(词条处理器),Searcher(搜索器),EntitySet(实体集),IndexStore(索引库),FileSpider(文件蜘蛛),FileFilter(文件过滤器),Entity(实体)等,领域模型图如图3.6和3.7所示。

图3.6用户接口子系统部分领域模型

图3.7索引建立子系统部分领域模型

3.2系统概要设计

在需求分析阶段,产生的用例模型和领域模型带入设计阶段,现在可以大概设计系统的构架,如图3.8所示。

图3.8系统总体架构

以下是对架构设计的叙述:

(1)Heritrix爬虫系统

主要是应用Heritrix爬虫抓取资源,而这些并不属于这此工程开发任务,所以不纳入设计开发。

(2)索引建立子系统

主要是建立索引,及其周边一些操作。

要设计索引建立子系统,必须要了解索引建立过程,领域模型中已经可以看出此子系统的大概框架,首先要利用文件爬虫将资源目录下的所有文件路径收集起来,再经过文件过滤器将自己感兴趣的文件路径得到,得到的路径经过正文抽取器将数据抽取出来,这样就可以利用抽取出来的数据进行索引建立。

在熟悉了搜索引擎建立的过程后,可以对其架构进行设计,可以在流程中看出资源文件就像是一批材料,索引建立子系统就像是工厂,将材料加工输出成品,所以可以将该流程设计成流水线形式,可以将资源路径作为流水线上的材料,疵品被剔除掉,经过流水线的一系列操作后,索引最后输出。

(3)用户接口子系统

用户接口子系统是用户利用用户接口子系统进行搜索,这部分可能设计到的技术是Ajax,LuceneSearcher等,利用Ajax的用户操作与服务器响应异步化特性,可以实现局部数据传输,只将用户所需要的信息返回即可,这样大大降低了服务器和客户端交互量,用户可以创建接近本地桌面应用的直观、丰富和动态的Web用户界面。

3.3系统详细设计

在框架设计中,简要的设计出来了各个子系统的整体流程,下面则是对索引建立子系统和用户接口子系统的设计。

3.3.1索引建立子系统

(1)实体设计

实体的设计的目的是封装资源抽取出来的数据,这样有利于使用和传递数据。

在实体设计的上层是Entity,它继承自Object类,是所有实体的父类。

在本项目中只设计了三个实体:

Movie、Text和Image,分别对应影视、网页和图片。

实体关系图如图3.9所示。

图3.9实体之间关系图

(2)抽取器设计

提到正文抽取技术,当今流行的技术有基于分装器的网页文本信息抽取技术、基于统计的网页正文抽取技术和基于数据挖掘思想的网页正文抽取技术。

①基于分装器的网页文本信息抽取技术,该方法属于传统的网页信息抽取方法。

它使用分装器(wrapper)来抽取网页中感兴趣的数据。

分装器(也称为:

包装器)是一个程序,它根据一定的信息模式识别知识从特定的信息源中抽取相关内容,并以特定形式加以表示。

②基于统计的网页文本信息抽取技术,该方法克服了传统的网页内容抽取方法需要针对不同的数据源构造不同的包装器的缺点,具有一定的普遍性。

该方法对网页正文信息的抽取依赖阈值P和T,阈值P决定了选择网页正文的文本块。

③基于数据挖掘思想的网页正文抽取技术,这类方法把数据挖掘技术应用到对网页自由文本的处理中,大大提高对网页正文(文章)抽取的准确率,突破了数据挖掘技术在应用方面对结构化数据的依赖,是一种很好的正文抽取技术。

但仍然有一些普遍性问题有待进一步改善。

三种技术中基于数据挖掘的网页正文抽取技术实现难度很大,在此次项目中不加以考虑,所以采用前两种技术。

在现今比较流行的开源项目中,HtmlParser是基于分装器的技术,而基于统计的技术要自己来分析设计一种算法。

这种算法的开发也是接下来的重要任务之一。

在抽取器设计中,影视和图片的抽取器基于分装器技术,而网页抽取器是基于统计技术,出于这样的考虑是因为影视和图片在网页中的结构比较固定,比如说图片,一般都封装在img标记中,这样利用分装器很容易就可以抽取出来,而对于网页的抽取就不那么容易了,大量的网站中的网页结构不是相同的,存在很大的差异,不适合利用分装器抽取,所以选取了更为便捷的方式,基于统计的抽取技术。

抽取器之间的关系图如图3.10所示。

图3.10抽取器之间关系图

(3)中文正文抽取算法设计

对于影视和图片的抽取利用基于分装器的方法,只要目标网页结构比较稳定,并对目标网页进行分析,就很容易利用HtmlParser进行内容抽取。

对于基于统计的方法算法设计思路如下:

设计中涉及的数据结构有树和栈:

树用于存储Html文件中每个标记块中的内容,类中应该包含对树节点的一些操作;栈利用栈将Html文件建立数据树。

在用输入流读取文件的时候,将开始标记放入栈中,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1