预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共41页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

开放源代码的全文检索引擎Lucene――介绍、系统结构与源码实现分析第一节全文检索系统与Lucene简介一、什么是全文检索与全文检索系统?全文检索是指计算机索引程序通过扫描文章中的每一个词对每一个词建立一个索引指明该词在文章中出现的次数和位置当用户查询时检索程序就根据事先建立的索引进行查找并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。全文检索的方法主要分为按字检索和按词检索两种。按字检索是指对于文章中的每一个字都建立索引检索时将词分解为字的组合。对于各种不同的语言而言字有不同的含义比如英文中字与词实际上是合一的而中文中字与词有很大分别。按词检索指对文章中的词即语义单位建立索引检索时按词检索并且可以处理同义项等。英文等西方文字由于按照空白切分词因此实现上与按字处理类似添加同义处理也很容易。中文等东方文字则需要切分字词以达到按词索引的目的关于这方面的问题是当前全文检索技术尤其是中文全文检索技术中的难点在此不做详述。全文检索系统是按照全文检索理论建立起来的用于提供全文检索服务的软件系统。一般来说全文检索需要具备建立索引和提供查询的基本功能此外现代的全文检索系统还需要具有方便的用户接口、面向WWW[1]的开发接口、二次应用开发接口等等。功能上全文检索系统核心具有建立索引、处理查询返回结果集、增加索引、优化索引结构等等功能外围则由各种不同应用具有的功能组成。结构上全文检索系统核心具有索引引擎、查询引擎、文本分析引擎、对外接口等等加上各种外围应用系统等等共同构成了全文检索系统。图1.1展示了上述全文检索系统的结构与功能。在上图中我们看到:全文检索系统中最为关键的部分是全文检索引擎各种应用程序都需要建立在这个引擎之上。一个全文检索应用的优异程度根本上由全文检索引擎来决定。因此提升全文检索引擎的效率即是我们提升全文检索应用的根本。另一个方面一个优异的全文检索引擎在做到效率优化的同时还需要具有开放的体系结构以方便程序员对整个系统进行优化改造或者是添加原有系统没有的功能。比如在当今多语言处理的环境下有时需要给全文检索系统添加处理某种语言或者文本格式的功能比如在英文系统中添加中文处理功能在纯文本系统中添加XML[2]或者HTML[3]格式的文本处理功能系统的开放性和扩充性就十分的重要。二、什么是Lucene?Lucene是apache软件基金会[4]jakarta项目组的一个子项目是一个开放源代码[5]的全文检索引擎工具包即它不是一个完整的全文检索引擎而是一个全文检索引擎的架构提供了完整的查询引擎和索引引擎部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包以方便的在目标系统中实现全文检索的功能或者是以此为基础建立起完整的全文检索引擎。Lucene的原作者是DougCutting他是一位资深全文索引/检索专家曾经是V-Twin搜索引擎[6]的主要开发者后在Excite[7]担任高级系统架构设计师目前从事于一些Internet底层架构的研究。早先发布在作者自己的http://www.lucene.com/后来发布在SourceForge[8]2001年年底成为apache软件基金会jakarta的一个子项目:http://jakarta.apache.org/lucene/。三、Lucene的应用、特点及优势作为一个开放源代码项目Lucene从问世之后引发了开放源代码社群的巨大反响程序员们不仅使用它构建具体的全文检索应用而且将之集成到各种系统软件中去以及构建Web应用甚至某些商业软件也采用了Lucene作为其内部全文检索子系统的核心。apache软件基金会的网站使用了Lucene作为全文检索的引擎IBM的开源软件eclipse[9]的2.1版本中也采用了Lucene作为帮助子系统的全文索引引擎相应的IBM的商业软件WebSphere[10]中也采用了Lucene。Lucene以其开放源代码的特性、优异的索引结构、良好的系统架构获得了越来越多的应用。Lucene作为一个全文检索引擎其具有如下突出的优点:(1)索引文件格式独立于应用平台。Lucene定义了一套以8位字节为基础的索引文件格式使得兼容系统或者不同平台的应用能够共享建立的索引文件。(2)在传统全文检索引擎的倒排索引的基础上实现了分块索引能够针对新的文件建立小文件索引提升索引速度。然后通过与原有索引的合并达到优化的目的。(3)优秀的面向对象的系统架构使得对于Lucene扩展的学习难度降低方便扩充新功能。(4)设计了独立于语言和文件格式的文本分析接口索引器通过接受Token流完成索引文件的创立用户扩展新