基于lucene的信息检索系统

基于lucene的信息检索系统

ID:307929

大小:877.00 KB

页数:21页

时间:2017-07-21

基于lucene的信息检索系统_第1页
基于lucene的信息检索系统_第2页
基于lucene的信息检索系统_第3页
基于lucene的信息检索系统_第4页
基于lucene的信息检索系统_第5页
资源描述:

《基于lucene的信息检索系统》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、第三章信息检索系统及其关键技术3.1信息检索系统简介信息检索系统是利用信息检索技术(如全文检索等)帮助用户查找特定信息的一种工具。它能够对信息进行正确的表示、存储和组织,同时还提供对于信息的访问方式。在这里,信息的概念很宽泛,,它可以是一篇文章,一段文本,一个网页,一封邮件,一张照片,甚至是一些虚拟信息的集合。3.2信息检索的过程检索的整个过程包括:构建文本库,建立索引,进行检索。1.构建文本库在开发检索功能前,一个信息检索系统需要做些准备工作。首先,必须构建一个文本数据库。这个文本数据库用来保存所有用户可能检索的信息。在这些信息的基础上,确定检索系统中的文本模型。文本模型是被系统所认可

2、的一种信息格式,这种格式应当具有可识别、冗余度低等特点。当然,在系统的运作过程中,文本数据库的信息可能会不断地发生变化。2.建立索引有了文本模型后,就应该根据数据库内的文本建立索引。索引可以大大提高信息检索的速度。目前有多种索引的建立方式,采用哪种方式取决于信息检索系统的规模。大型信息检索系统(如百度、Google这样的搜索引擎)均采用倒排的方式来建立索引。3.进行搜索在为文本建立索引之后,就可以开始对其进行搜索。通常由用户提交一个检索请求,该请求被分析,然后在索引中检索并返回结果。3.3LuceneLucene是一个开源全文检索工具包,它是apache软件基金会jakarta项目组的一

3、个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。3.3.1Lucene结构分析Lucene作为一个优秀的全文检索引擎,其结构具有强烈的面向对象特征。首先是定义了一个与平台无关的索引文件格式,其次通过抽象将其核心组成部分设计为抽象类,具体的平台实现部分设计为抽象类的实现,此外与具体平台相关的部分比如文件存储也封装为类

4、,经过层层的面向对象式的处理,最终达成了一个低耦合高效率,容易二次开发的检索引擎。Lucene的结构和源码组织结构如图3.1所示:图3.1Lucene结构和源码组织结构从图中可以看出,Lucene由基础结构封装、索引核心、对外接口三大部分组成。其中直接操作索引文件的索引核心又是系统的重点。Lucene的将所有源码分为了7个模块(在java语言中以包即package来表示),各个模块所属的部分也如图3.1所示。3.3.2Lucene索引的建立索引是信息检索引擎工作的第一步,只有建立了索引才能进行信息检索。Lucene用Document逻辑文件和Field域来组织各种数据源。Document

5、向Lucene提供原始的要索引的文本内容,Lucene从Document中取出相关的数据源,并根据属性配置进行相应的处理,建立索引。索引过程如下:(1)创建一个IndexWriter用来写索引文件,它有几个参数,INDEX_DIR就是索引文件所存放的位置,Analyzer便是用来对文档进行词法分析和语言处理的。(2)创建一个Document代表我们要索引的文档。(3)将不同的Field加入到文档中。我们知道,一篇文档有多种信息,如题目,作者,修改时间,内容等,不同类型的信息用不同的Field来表示。(4)IndexWriter调用函数addDocument将索引写到索引文件夹中。3.3.

6、3Lucene的搜索Lucene建立了功能强大的索引机制为搜索服务,这是因为在检索系统的使用中,用户体验最深的还是搜索部分。如果这一部分的性能无法达到用户要求,那么软件就没有太大的意义。搜索过程如下:(1)IndexReader将磁盘上的索引信息读入到内存,INDEX_DIR就是索引文件存放的位置。(2)创建IndexSearcher准备进行搜索。(3)创建Analyer用来对查询语句进行词法分析和语言处理。(4)创建QueryParser用来对查询语句进行语法分析。(5)QueryParser调用parser进行语法分析,形成查询语法树,放到Query中。(6)IndexSearche

7、r调用search对查询语法树Query进行搜索,得到查询结果存放在TopScoreDocCollector。3.3.4中文分词中文分词是处理中文信息的基础与关键。由于Lucene自带的分词器对英文的分词效果较好,但对中文的分词效果并不如意。为了使检索系统能更好的处理中文信息,本文采用了IKAnalyzer作为分词器。IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。