基于lucene的信息检索系统 毕业论文(推荐)_全文检索lucene研究

2020-02-28 其他范文 下载本文

基于lucene的信息检索系统 毕业论文(推荐)由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“全文检索lucene研究”。

第三章 信息检索系统及其关键技术

3.1 信息检索系统简介

信息检索系统是利用信息检索技术(如全文检索等)帮助用户查找特定信息的一种工具。它能够对信息进行正确的表示、存储和组织,同时还提供对于信息的访问方式。在这里,信息的概念很宽泛,它可以是一篇文章,一段文本,一个网页,一封邮件,一张照片,甚至是一些虚拟信息的集合。

3.2 信息检索的过程

检索的整个过程包括:构建文本库,建立索引,进行检索。1.构建文本库

在开发检索功能前,一个信息检索系统需要做些准备工作。首先,必须构建一个文本数据库。这个文本数据库用来保存所有用户可能检索的信息。在这些信息的基础上,确定检索系统中的文本模型。文本模型是被系统所认可的一种信息格式,这种格式应当具有可识别、冗余度低等特点。当然,在系统的运作过程中,文本数据库的信息可能会不断地发生变化。

2.建立索引

有了文本模型后,就应该根据数据库内的文本建立索引。索引可以大大提高信息检索的速度。目前有多种索引的建立方式,采用哪种方式取决于信息检索系统的规模。大型信息检索系统(如百度、Google这样的搜索引擎)均采用倒排的方式来建立索引。

3.进行搜索

在为文本建立索引之后,就可以开始对其进行搜索。通常由用户提交一个检索请求,该请求被分析,然后在索引中检索并返回结果。

3.3 Lucene

Lucene是一个开源全文检索工具包,它是apache软件基金会jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。3.3.1 Lucene结构分析

Lucene作为一个优秀的全文检索引擎,其结构具有强烈的面向对象特征。首先是定义了一个与平台无关的索引文件格式,其次通过抽象将其核心组成部分设计为抽象类,具体的平台实现部分设计为抽象类的实现,此外与具体平台相关的部分比如文件存储也封装为类,经过层层的面向对象式的处理,最终达成了一个低耦合高效率,容易二次开发的检索引擎。Lucene的结构和源码组织结构如图3.1所示:

查询语句org.apache.lucene.queryPaser被索引文件查询结果org.apache.lucene.search对org.apache.lucene.analysis外接口org.apache.lucene.index核心索引org.apache.lucene.store索引文件org.apache.lucene.documentorg.apache.lucene.store基础结构封装 图3.1 Lucene结构和源码组织结构

从图中可以看出,Lucene由基础结构封装、索引核心、对外接口三大部分组成。其中直接操作索引文件的索引核心又是系统的重点。Lucene的将所有源码分为了7个模块(在java语言中以包即package来表示),各个模块所属的部分也如图3.1所示。3.3.2 Lucene索引的建立

索引是信息检索引擎工作的第一步,只有建立了索引才能进行信息检索。Lucene用Document逻辑文件和Field域来组织各种数据源。Document向Lucene提供原始的要索引的文本内容,Lucene从Document中取出相关的数据源,并根据属性配置进行相应的处理,建立索引。

索引过程如下:

(1)创建一个IndexWriter用来写索引文件,它有几个参数,INDEX_DIR就是索引文件所存放的位置,Analyzer便是用来对文档进行词法分析和语言处理的。(2)创建一个Document代表我们要索引的文档。

(3)将不同的Field加入到文档中。我们知道,一篇文档有多种信息,如题目,作者,修改时间,内容等,不同类型的信息用不同的Field来表示。(4)

IndexWriter调用函数addDocument将索引写到索引文件夹中。

3.3.3 Lucene的搜索

Lucene建立了功能强大的索引机制为搜索服务,这是因为在检索系统的使用中,用户体验最深的还是搜索部分。如果这一部分的性能无法达到用户要求,那么软件就没有太大的意义。

搜索过程如下:

(1)IndexReader将磁盘上的索引信息读入到内存,INDEX_DIR就是索引文件存放的位置。

(2)创建IndexSearcher准备进行搜索。

(3)创建Analyer用来对查询语句进行词法分析和语言处理。(4)创建QueryParser用来对查询语句进行语法分析。

(5)QueryParser调用parser进行语法分析,形成查询语法树,放到Query中。(6)

IndexSearcher调用search对查询语法树Query进行搜索,得到查询结果存放在TopScoreDocCollector。

3.3.4 中文分词

中文分词是处理中文信息的基础与关键。由于Lucene自带的分词器对英文的分词效果较好,但对中文的分词效果并不如意。为了使检索系统能更好的处理中文信息,本文采用了IKAnalyzer作为分词器。IK Analyzer是一个开源的,基于java 语言开发的轻量级的中文分词工具包。从2006年12月推出1.0 版开始,IKAnalyzer已经推出了3个大版本。最初,它是以开源项目Luence 为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的IKAnalyzer 3.X 则发展为面向Java 的公用分词组件,独立于Lucene 项目,同时提供了对Lucene 的默认优化实现。IKAnalyzer的特性:

 采用了特有的“正向迭代最细粒度切分算法“,具有60 万字/秒的高速处理能力。 采用了多子处理器分析模式,支持:英文字母(IP 地址、Email、URL)、数字(日期,常用中文数量词,罗马数字,科学计数法),中文词汇(姓名、地名处理)等分词处理。

 优化的词典存储,更小的内存占用。支持用户词典扩展定义

 针对Lucene 全文检索优化的查询分析器IKQueryParser;采用歧义分析算法优化查询关键字的搜索排列组合,能极大的提高Lucene 检索的命中率。

第四章 信息检索系统的分析与设计

4.1 系统功能需求

随着科技的发展,电脑的应用越来越普遍,人们的学习工作几乎都不能离开电脑。而笔记本电脑由于其轻便和时尚性,受到人们普遍的喜爱。但是,在购买笔记本时,我们需要详细地了解所买型号笔记本的外表及各种功能,为此我们往往要去各个商家挑选。为了方便,需要提供一个专门的笔记本电脑信息查询系统,能让用户轻松的获取各种型号笔记本的详细参数与外观。该系统提供一个良好的用户界面,用户查询时,系统能根据用户查询语句精确地给出查询信息,能够较好地理解用户的查询语句。

4.2 系统开发平台设计

本系统采用的是Eclipse6.5+MySQL5.1+Tomcat5.5的开发环境。

 Eclipse是一个开放源代码的、基于Java的可扩展开发平台。在开发时搭配使用MyEclipse进行开发。MyEclipse企业级工作平台是对Eclipse IDE的扩展,利用它可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大地提高工作效率。它是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML CSS、Javascript、Struts、Spring、SQL、Hibernate和JSF。

 MySQL是最受欢迎的开源SQL数据库管理系统,它由MySQL AB开发、发布和支持。MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置的软件中。本文采用的是当前的稳定版本5.1。

 Tomcat是一个免费的、开放源码的、支持JSP和Servlet的web服务器。Tomcat是一个小型的轻量级应用服务器,在中、小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能。目前Tomcat5.5是较稳定的版本,而且Eclipse也很好的支持该版本的集成,所以本文采用Tomcat5.5进行开发。此外,本系统所应用到的其它开源工具为:Struts1.2、Spring2.5、Hibernate3.1,网络爬虫Heritrix1.14.3,网页解析工具HtmlParser2.0,全文检索工具包Lucene3.0,中文分词软件IKAnalyzer3.0。

4.3 系统的组成结构

整个系统由三个部分组成:网页采集分析模块、索引与数据库模块、web搜索界面模块。其中网页采集与分析分别由开源工具网络爬虫Heritrix和网页解析器HtmlParser完成;由Lucene完成索引系统,并将索引与数据库关联;web查询界面基于SSH框架设计完成。模块组成结构如图4.1所示。

网页抓取分析模块索引与数据库模块InternetHeritrixWeb检索模块抓取的信息网页Lucene建立索引HtmlParser文本格式信息返回查询结果创建数据库数据库索引根据索引查找数据库查询索引基于SSH设计

图4.1 系统模块结构图

4.4 网页抓取分析模块设计

4.4.1 站点选择

从技术角度看,选择网站的主要依据有:

(1)网站能够被Heritrix爬虫抓取。因为有的网站使用了反爬虫技术,防止未经授权的爬虫对面页进行抓取。

(2)网站的信息不是用javaScript动态生成的。这种动态生成的内容需要在浏览器中运行生成,是爬虫无法获取到的。

(3)网站的面页结构不应该经常变化,最好是使用一种模版动态生成的。这样有利于在分析面页时,使用较为简单的方式从网页中解析数据。

除了上述3点技术方面的因素,在选择网站时,也应当尽量选择那些访问量较大、产品信息比较齐全的网站。这样,有利于数据完整性。基于上述各因素的考虑,本文选择太平洋电脑网(http://Parser 对于抓取到的网页,需要经过解析,提取出需要的信息以便更好的建立索引和创建数据库。本文Html解析器是HtmlParser,HtmlParser是一个开源的Java库,它提供接口,支持线程和嵌套的解析Html文本。HtmlParser提供了两种访问Html结点的方法:Visitor模式和Filter模式,本文采用了Filter模式。Filter模式通过设置一定的过滤条件,对每个结点进行过滤,返回一个符合规则的节点列表。Org.htmlparser.filters包含所有已经实现的Filter类型,定义了16种Filter。

例如要解析一个网页中所有包含图片的链接,分析可得该节点中具有链接标签名”a”,并且它的字节点中还必须包含图片标签名”img”,则过滤器的定义为:

NodeFilter filter = new AndFilter(new TagNameFilter(“A”), New HasChildFilter(new TagNameFilter(“IMG”)))4.4.4 网页信息结构化

在抓取到笔记本产品各种信息的Html文本后,需要用HtmlParser对Html文本解析,得到建立索引所需的各种信息。处理后的的文件如图4.2所示。

图4.2 处理后产品的信息格式

从图中可以看出文件的格式如下:第一行是笔记本品牌(包括中文和英文名称);第二行是笔记本具体型号;最后一行则是该笔记本的对应图片文件名,图片名是经过Hash后的字符串;其余部分则是该笔记本的详细参数。将所有笔记本产品的信息按上述格式存储,以便建立索引。

4.5 数据库与索引设计

4.5.1 数据库设计

本文数据库结构简单,只有一个数据表来存储笔记本产品的各种信息,数据库各字段含义如表4.1所示。

表4.1 数据库字段含义

字段名 Id name type content abstractcontent

字段含义 主键

品牌名称,如”苹果”

型号,如” ibook G4 M9627CH/A” 笔记本产品的详细信息

详细参数的摘要,供建立索引时使用

创建数据库的SQL语句如下: create database searchdb;use searchdb;create table product(id

int AUTO_INCREMENT, name varchar(128), type varchar(128), content varchar(20000), abstractcontent varchar(512),);4.5.2 索引设计

在使用Lucene建立索引时,需要定义Lucene的Document格式。索引中的信息应当尽量少,只要能够满足用户检索要求就可以了。本文中,为Document构建了4个Field:

//当前产品在数据库中的id

Field indentifier = new Field(“id”,id + “”,Field.Store.YES, Field.Index.NOT_ANALYZED);//产品的品牌

Field name = new Field(“name”,product.getName(),Field.Store.YES, Field.Index.ANALYZED);//产品型号

Field type = new Field(“type”,product.getType(),Field.Store.YES, Field.Index.ANALYZED);//将笔记本产品的name、type、abstractcontent信息综合起来,默认的检索域 Field all = new Field(“all”,text,Field.Store.YES, Field.Index.ANALYZED);上述4中Filed中,前3个与数据库的内容有直接的对应关系,而最后一个Filed则是将name、type这两个Filed拼接起来并添加了abstractcontent来进行保存,为用户提供一个检索时的默认Filed。这种方式占用了索引空间,但却避免了使用多域搜索带来的性能损失,还可提高检索的全面性。

4.6 web检索模块设计

web检索模块基于SSH设计实现,由Struts作为控制器,Spring作为业务层,Hibernate作为数据持久层,结构如图4.3所示。

控制器Struts业务层SpringSpringAOP持久层HibernateHibernateTemplaterequestActionServletActionFrom数据库responseJSPActionSpringIocHibernateDAO图4.3 基于SSH的web检索模块结构图

从图中可以看出,用户的请求会发送给ActionServlet,用户数据通过ActionForm Bean传递给Action,由Action类来通过Spring的IoC容器访问Hibernate的DAO,DAO负责数据库的交互,然后再返回JSP面页将查询结果进行显示。

第五章 信息检索系统的实现

5.1 网页抓取的实现

在抓取任务开始前,需要对抓取的内容进行详细地分析,确定种子,即开始抓取的网页。本文中为了能尽量获取全部的产品信息,直接将需要抓取的面页(包括产品面页、详细参数面页、图片)的URL作为抓取的种子,这就需要找出所有产品的具体URL。在太平洋电脑网上提供了站内搜索功能,当输入查询某品牌的笔记本就能得到站内所有该品牌标记本的信息的面页,当然面页中也包含这些笔记本的产品面页的URL,这就提供了抓取的种子。依次查询各个品牌的笔记本,将查询结果面页保存到本地,然后用HtmlParser解析得到其中产品面页的URl,写入种子文件。

图5.1 查询结果面页源代码

从网页源代码中可以发现解析网页时可以得到该品牌所有笔记本产品的产品面页和详细参数面页的URL。其中产品详细参数面页URL的节点形如:

全部参数

《基于lucene的信息检索系统 毕业论文(推荐).docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
基于lucene的信息检索系统 毕业论文(推荐)
点击下载文档
相关专题 全文检索lucene研究 毕业论文 检索系统 信息 全文检索lucene研究 毕业论文 检索系统 信息
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文