基于Lucene电子文献全文检索系统研究.docVIP

基于Lucene电子文献全文检索系统研究.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Lucene电子文献全文检索系统研究

基于Lucene电子文献全文检索系统研究   【摘要】:实现了中文单字切分模块,并在LuceneAPI基础上建立支持中英文混合检索的全文数据库。在电子文献全文检索系统项目中作为全文检索工具。中文全文数据库的主要性能和功能包括:支持中英文混合检索;可以不关机动态添加或删除一篇文档索引;采用多线程设计,能承受大量的访问请求;支持跨平台运行;提供命令行直接查询方式和基于WEB的查询方式;易学通用的检索表达式;系统可扩展性强。   【关键词】:中文信息处理;全文数据库;全文检索 Lucene   中国分类号:TP3 文献标识码:A 文章编号:1002-6908(2007)0220078-01      1.Lucene简介       Lucene是一个信息检索的函数库(Library),利用它你可以为你的应用加上索引和搜索的功能。Lucene的使用者不需要深入了解有关全文检索的知识,仅仅学会使用库中的一个类,你就为你的应用实现全文检索的功能。Lucene可以对任何的数据做索引和搜索,不管是MS word、 Html 、pdf还是其他什么形式的文件只要你可以从中抽取出文字形式的内容就可以被Lucene所用,你就可以用Lucene对它们进行索引以及搜索。它不仅能用来构建具体的全文检索应用,而且可被集成到各种系统软件中构建Web 等多种应用。例如,某些商业软件也采用了Lucene作为其内部全文检索子系统的核心。      2.Lucene检索原理       Lucene的检索算法属于索引检索,即用空间来换取时间,对需要检索的文件、字符流进行全文索引,在检索的时候对索引进行快速的检索,得到检索位置,这个位置记录检索词出现的文件路径或者某个关键词。在使用数据库的项目中,一般不使用数据库进行检索,其主要原因是数据库在非精确查询的时候使用查询语言like%keyword%,对数据库进行查询是对所有记录遍历,并对字段进行%keyword%匹配,在数据库的数据庞大以及某个字段存储的数据量庞大的时候,这种遍历是低效的,它需要对所有的记录进行匹配查询。而Lucene刚好弥补了这方面的缺陷,它主要适用于文档集的全文检索,以及海量数据库的模糊检索,特别是对数据库的 xml 或者大数据的字符类型的字段进行检索更显示出它的高效性。      3.Lucene的系统结构分析       Lucene作为一个优秀的全文检索引擎,其系统结构具有很强的面向对象特征。首先是定义了一个与平台无关的索引文件格式,其次通过抽象将系统的核心组成部分设计为抽象类,具体的平台实现部分设计为抽象类的实现。此外与具体平台相关的部分比如文件存储也封装为类,经过层层的面向对象式的处理,最终达成了一个低耦合高效率,容易二次开发的检索引擎系统。下表是Lucene系统框架图:       3.1 分析器 Analyzer    分析器主要用于切词,一段文档输入以后,经过 Analyzer,输出时只剩下有用的部分,其他部分被剔除。分析器提供了抽象的接口,因此语言分析 Analyser 是可以定制的。因为Lucene缺省提供了 2 个比较通用的分析器 Sim2pleAnalyser和 StandardAnalyser,这2个分析器缺省都不支持中文,所以要加入对中文语言的切分规则,需要修改这2个分析器。   3.2 org.apache.lucene.index   索引包是整个系统核心,主要提供库的读写接口,通过该包可以创建库、添加删除记录及读取记录等。全文检索的根本就为每个切出来的词建立索引,查询时只需要遍历索引,而不需要遍历整个正文,从而极大地提高了检索效率。Lucene的索引树是非常优质高效的,在这个包中,主要有 IndexWriter和 IndexReader这两个类。IndexWriter的主要作用就是接收新加入的文档 document,然后在内部为之生成相应的小段,最后再合并,并且向索引文件中输出。IndexReader 部分则只是做了接口设计,没有具体的实现,这个和本部分所完成的主要功能有关:索引构建逻辑。设计这个抽象类的目的是预先完成一些函数,为以后检索 search 部分的各种形式的 IndexReader 铺平道路,也是利用了在同一个包内可以方便访问其它类的保护变量这个Java语言的限制。IndexWriter的构造函数有三种接口,针对目录Directory、文件 File、文件路径 String 三种情况。       IndexWriter为了减少大量的 I/O 维护操作,在每得到一定量的索引后建立新的小索引文件,然后再定期将它们整合到一个索引文件中,因此在索引结束时必须进行 wirter.optimize以便将所有索引合并优化。

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档