搜索引擎关键技术分析与性能优化—基于lucene的全文检索技术的分析与应用

搜索引擎关键技术分析与性能优化—基于lucene的全文检索技术的分析与应用

ID:32200266

大小:3.72 MB

页数:52页

时间:2019-02-01

搜索引擎关键技术分析与性能优化—基于lucene的全文检索技术的分析与应用_第1页
搜索引擎关键技术分析与性能优化—基于lucene的全文检索技术的分析与应用_第2页
搜索引擎关键技术分析与性能优化—基于lucene的全文检索技术的分析与应用_第3页
搜索引擎关键技术分析与性能优化—基于lucene的全文检索技术的分析与应用_第4页
搜索引擎关键技术分析与性能优化—基于lucene的全文检索技术的分析与应用_第5页
资源描述:

《搜索引擎关键技术分析与性能优化—基于lucene的全文检索技术的分析与应用》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、第二章Lucene关键技术研究图2—1Lucene系统结构图Fig.2—1Lucenesystemstructure从图中我们清楚的看到,Lucene的系统由基础结构封装、索引核心、对外接口三大部分组成。其中直接操作索引文件的索引核心又是系统的重点。Lucene将所有源码分为了7个模块,各个模块所属的系统部分也如上图所示。从面象对象的观点来考察,Lucene应用了最基本的一条程序设计准则1261:引入额外的抽象层以降低藕合性。首先,引入对索引文件的操作lucene.store的封装,然后将索引部分的实现(1ucene.index)建立在其上,完成对索引核心的抽象。在索引核心的基础

2、上开始设计对外的接13lucene.search与lucene.analysis。在每一个局部细节上,比如某些常用的数据结构与算法上,Lucene也充分的应用了这一条准则,使得Lucene的实现容易理解,易于扩展。Lucene在系统结构上的另一个特点表现为它引入了传统的客户端服务器结构以外的应用结构。Lucene可以作为一个运行库被包含到应用本身中去,而不是做为一个单独的索引服务器存在。这自然和Lucene开放源代码的特征分不开,但是也体现了Lucene在编写上的本来意图:提供一个全文索引引擎的架构,而不是实现。2.2.2Lucene数据流分析理解Lucene系统结构的另一个方式

3、是去探讨其中数据流的走向,并以此摸清楚Lucene系统内部的调用时序。在此基础上,我们能够更加深入的理解Lucene的系统结构组织,方便以后在Lucene系统上的开发工作。这部分的分析,是深入Lucene系统的钥匙,也是进行重写的基础。江南大学硕士学位论文●。。~一⋯一’一一⋯⋯⋯⋯一一⋯一11(1):文本流(2):tokm流(3):字节流(4):查询语句对象流i●-⋯⋯⋯⋯_⋯··⋯⋯--⋯-⋯-⋯⋯-⋯⋯--⋯⋯⋯·⋯-⋯⋯-·⋯...图2-2Lucene数据流图Fig.2-2Lucenedataflowchart我们来看看在Lucene系统中的主要的数据流以及它们之间的关系

4、,如图2—2所示,图中共存在4种数据流,分别是文本流、Token流、字节流与查询语句对象流。文本流表示了对于索引目标和交互控制的抽象,即用文本流表示了将要索引的文件,用文本流向用户输出信息;在实际的实现中,Lucene中的文本流采用了UCS.2作为编码,以达到适应多种语言文字的处理的目的。Token流是Lucene内部所使用的概念,是对传统文字中的词的概念的抽象,也是Lucene在建立索引时直接处理的最小单位;简单的讲Token就是一个词和所在域值的组合。字节流则是对文件抽象的直接操作的体现,通过固定长度的字节(Lucene定义为8比特位长)流的处理,将文件操作解脱出来,也做到了

5、与平台文件系统的无关性。查询语句对象流则是仅仅在查询语句解析时用到的概念,它对查询语句抽象,通过类的继承结构反映查询语句的结构,将之传送到查找逻辑来进行查找的操作。2.3Lucene索引技术研究2.3.1倒排索引技术倒排索引是一种面向单词的索引机制,利用它可以提高检索时的效率。通常情况下,倒排索引结构由“词典"和“出现情况’’两部分组成。对于每一个单词,都会有一个词汇列表记录单词在所有文档中出现的位置,这些位置可以是单词的位置(代表文本中的第几个单词),也可以足字符的位置(it表文本中的第几个字符)。如果使用一般的索引结构(为了与倒排索引相对应,有些文献也称这样的索引结构为顺排索

6、引)建立的是“文档到单词"的映射关系,在使用倒排索引技术后,建立的是“单词到文档’’的映射关系。假设有两篇文档:文档A和文档B。文档A的内容是:Thisisadog。文档B的内容足:Thedogisakindofanimal。如果建立的是一般的索引结构,那么会有如表2—1所示的关系:6第二章Lucent关键技术研究Tab2.1Fomvardintlexstructure从中可以看出,一般的索引结构是以文档为标准建立索引结构的,即它记录的是一篇文档中所有单词出现的情况。比如在文档B中dog,kind,animal均出现了一次。然而,用户在进行查询时,都是输入关键字进行查询,如果使用

7、这种索引结构,在查询某一个关键字时往往需要遍历所有的索引,当索引量非常大时,效率会成为一个很大的制约因素。倒排索引恰恰解决了这个问题,它是以关键字为标准建立索引的。倒排索引描述了一个单词在所有文档中的出现情况,例如单词“dog”在文档A和文档B中分别出现了一次,而单词“kind”只在文档B中出现了一次,如图表2-2所示:Tab.2-2Invenedindcxstruc¨咒通过比较可以发现,一般的索引结构建立的是一种“文档到单词”,的映射关系,而倒排索引建立的则是一种“单词到文档”

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

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

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