基于Lucene的大文档集合索引机制 ——文档索引的分析、设计和实现-开题报告_第1页
基于Lucene的大文档集合索引机制 ——文档索引的分析、设计和实现-开题报告_第2页
免费预览已结束,剩余4页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

厦门大学软件学院毕业设计(论文)开题报告学生姓名 班级一班学号 指导教师姓 名 职称 所在单位厦门大学软件学院毕业设计(论文)题 目基于Lucene的大文档集合索引机制文档索引的分析、设计和实现毕业设计(论文)的目标:一、 整体软件目标1、 利用Lucene的API接口实现对特定文档的搜索2、 搜索结果按照一定的方式进行排序,以便于用户检索二、 文档索引的分析、设计和实现1、 文档索引的分析。利用Lucene的分析器(Analyzer)对各种各样的输入进行分析,实现分词和过滤不同文本,有选择的将文本进入索引,以提高索引效率,提高搜索引擎的性能。2、 文档索引的设计和实现。利用Lucene中的Document类、indexWriter类实现对不同类型文档的索引,完成对Lucene的索引文件格式的研究。3、 该部分实现的文档索引为后半部分的查询提供前置条件。实现方法:一、 基本环境开发工具:eclipse开发语言:Java,jdk1.5.0开发平台:Windows开发使用的插件:Lucene二、 学习使用Lucene分析器1、 分词器(Tokenizer)和过滤器(TokenFilter)一个分析器所有的工作就是将分词器和过滤器进行合理的组合,使之产生对文本分词和过滤的效果。因此分析器使用分词器和过滤器构成了一个管道,文本“流过”这个管道后,就成为了可以进入索引的最小单元。2、 使用Lucene中的标准分析器StandardAnalyzer。StandardAnalyzer是Lucene开发包中内置的一种Analyzer的实现,可以将其理解成“标准分析器”,这个分析器是最容易使用也是使用最频繁的一种Analyzer的实现,它使用了Lucene内部自带的几种分词器和过滤器。三、 学习使用Lucene建立索引1、 索引建立的过程lucene没有定义一个确定的输入文档格式,但越来越多的人想到使用一个标准的中间格式作为Lucene的数据导入接口,然后其他数据,比如PDF只需要通过解析器转换成标准的中间格式就可以进行数据索引了。这个中间格式主要以XML为主,类似实现已经不下4,5个:数据源: WORD PDF HTML DB other | | | / XML中间格式 | Lucene INDEX2、 索引的添加IndexWriter类IndexWriter类似Lucene中最重要的类之一,它的功能就是将文档加入索引,同时控制索引过程中的各种参数。3、 索引的存放位置磁盘中存放FSDirectory与RAMDirectory使用FSDirectory时,Lucene会自动在内存中建立缓存,然后到一定时候就将索引写入磁盘。这一步操作对用户来说其实是透明的,因为用户看不见内存中的操作,而只能看见写好索引的文件系统中的内容。从功能角度来讲,FSDirectory在磁盘上所能做的所有事情,RAMDirectory在内存中都可以完成,并且会具有更快的速度。但唯一的问题就在于它在虚拟机退出后,内存中的索引将不复存在。4、 从索引中删除文档IndexReader类索引的维护中很重要的一部分就是删除不要的文档,对索引的文档删除时通过IndexReader类来完成的。IndexReader类从名称上来看并不具有删除索引的能力,但是实际上,它确实是唯一能够从索引中进行文档删除的工具。5、 Lucene的索引优化optimize()方法IndexWriter的optimize()方法就是来对索引进行优化的,它会将磁盘上的多个segment进行合并,组成一个全新的segment。需要注意的是optimize()方法并不会增加建索时的速度,反过来,它会降低建索的速度。通常在对大批量索引建立完成后再进行调用。6、 中文分词工具 ICTCLAS中文分词是其他中文信息处理的基础,搜索引擎只是中文分词的一个应用。其他的比如机器翻译(MT)、语音合成、自动分类、自动摘要、自动校对等等,都需要用到分词。中国科学院计算技术研究所在多年研究基础上,耗时一年研制出了基于多层隐马模型的汉语词法分析系统ICTCLAS(InstituteofComputingTechnology,ChineseLexicalAnalysisSystem),该系统的功能有:中文分词;词性标注;未登录词识别。分词正确率高达97.58%(最近的973专家组评测结果),基于角色标注的未登录词识别能取得高于90%召回率,其中中国人名的识别召回率接近98%,分词和词性标注处理速度为31.5KB/s。ICTCLAS和计算所其他14项免费发布的成果被中外媒体广泛地报道,国内很多免费的中文分词模块都或多或少的参考过ICTCLAS的代码。由于ICTCLAS是由C语言写成的,现在主流的开发工具用起来不太方便,于是有一些热心的程序员把ICTCLAS改为Java和C#等其他语言。四、 程序实现本程序主要按照索引的建立过程,进行索引的添加,索引的存放位置设定,索引的删除和索引的优化方面的探索。索引过程:从命令行读取文件名(多个),将文件分路径(path字段)和内容(body字段)2个字段进行存储,并对内容进行全文索引:索引的单位是Document对象,每个Document对象包含多个字段Field对象,针对不同的字段属性和数据输出的需求,对字段还可以选择不同的索引/存储字段规则,列表如下: 方法切词索引存储用途Field.Text(String name, String value)YesYesYes切分词索引并存储,比如:标题,内容字段Field.Text(String name, Reader value)YesYesNo切分词索引不存储,比如:META信息,不用于返回显示,但需要进行检索内容Field.Keyword(String name, String value)NoYesYes不切分索引并存储,比如:日期字段Field.UnIndexed(String name, String value)NoNoYes不索引,只存储,比如:文件路径Field.UnStored(String name, String value)YesYesNo只全文索引,不存储五、 Lucene背景介绍Lucene是Apache软件基金会Jakarta项目组的一个子项目,是一个开放源代码的全文搜索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎及部分文本分析引擎。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便地在目标系统中实现全文检索的功能,或者是以此为基础建立完整的全文检索引擎。Lucene可以对任何的数据做索引和搜索。Lucene不管数据源是什么格式,只要它能被转化为文字的形式,就可以被Lucene所分析利用。也就是说不管是word、Html、PDF还是其他什么形式的文件只要你可以从中抽取出文字形式的内容就可以被Lucene所用,就可以用Lucene对它们进行索引以及搜索。Lucene的API接口设计的比较通用,输入输出结构都很像数据库的表=记录=字段,所以很多传统的应用的文件、数据库等都可以比较方便的映射到Lucene的存储结构/接口中。总体上看:可以先把Lucene当成一个支持全文索引的数据库系统。六、Lucene原理lucene的检索算法属于索引检索,即用空间来换取时间,对需要检索的文件、字符流进行全文索引,在检索的时候对索引进行快速的检索,得到检索位置,这个位置记录检索词出现的文件路径或者某个关键词。在使用数据库的项目中,不使用数据库进行检索的原因主要是:数据库在非精确查询的时候使用查询语言“like%keyword%”,对数据库进行查询是对所有记录遍历,并对字段进行“%keyword%”匹配,在数据库的数据庞大以及某个字段存储的数据量庞大的时候,这种遍历是致命的,它需要对所有的记录进行匹配查询。因此,lucene主要适用于文档集的全文检索,以及海量数据库的模糊检索,特别是对数据库的xml或者大数据的字符类型。 七、系统总体结构本系统通过对Apache Lucene全文检索引擎工具包的深入剖析,并迸行扩展及二次开发,结合中文分词分析器,实现对中英文文档的全文索引。首先Spider到网络上下载类文本文件可以转换为文本文件的文件,如网页文件、文本文件、Word文档、PDF文档等,并将下载到的文件保存在本地的硬盘上。之后,文件处理器将Spider下载的文件转换为统一编码格式的文本文件。中文分词模块读入文件处理器处理生成的文本文件进行分词处理,并提供词元序列供索引器索引。索引模块从中文分词模块提供的词元序列中读入词元,然后对词元进行索引,并将索引结果保存到索引数据库中。使用Tomcat Web服务器发布系统的检索页面,当用户通过Web界面输入要查询的关键词并提交后,关键词被传递到搜索器中,搜索器到索引数据库中进行检索,检索到的结果经过摘要生成处理之后,作为响应发送给用户八、 lucene系统结构Lucene作为一个优秀的全文搜索引擎,其系统结构运用了大量的面向对象的设计思想。首先是定义了一个与平台无关的索引文件格式,其次通过抽象将系统的核心组成部分设计为抽象类,具体的平台部分设计为抽象类,此外与具体平台相关的部分比如文件存储也封装为类,经过层层的面向对象编程的处理,最终达成一个低耦合、高效率、容易二次开发等的检索引擎系统。Lucene的系统由基础结构封装、索引核心、对外接口三大部分组成。其中直接操作索引文件的索引核心又是系统的重点。Lucene将所有源码分为了7个模块(在java语言中以包即package来表示),各个所属模块所属的系统部分也如上图所示。需要说明的是org.apache.lucene.queryPaser是作为org.apache.lucene.search的语法解析器存在,不被系统之外实际调用,因此这里没有当作对外接口看待,而是将之独立出来。九、写作目的随着信息化的高速发展,其信息量正以指数规律迅猛增长,互联网已经成为人类最重要的海量信息源,“信息迷航”和“信息过载”已经成为日益严重的问题。此时,搜索引擎以其独特的搜索功能在信息的收集和检索方面发挥了重要的作用。本文在详细阐述了搜索引擎概念及发展历程的基础上,对搜索引擎索引模块的组织方法和索引功能实现的基本原理进行了重点的研究,本文还对基于Java的全文索引引擎包Lucene索引部分进行了探究,分析了Lucene建立索引的全过程、组织结构和基本的数据类型,从而通过利用Lucene的高效性、准确性,构建搜索引擎的索引部分,在一定程度上实现了搜索引擎的索引功能模块。时间进度安排:2008年2月25日-2008年3月15日 查找相应资料,对Lucene的索引

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论