教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 小学教育 >

全文检索及其在公文处理系统中的应用(3)

来源:网络收集 时间:2026-09-09
导读: 面对已经存在的商业全文检索引擎,LUCENE也具有相当的优势。首先,它的开发源代码发行方式(遵守Apache Software License),在此基础上程序员不仅仅可以充分的利用LUCENE所提供的强大功能,而且可以深入细致的学习

面对已经存在的商业全文检索引擎,LUCENE也具有相当的优势。首先,它的开发源代码发行方式(遵守Apache Software License),在此基础上程序员不仅仅可以充分的利用LUCENE所提供的强大功能,而且可以深入细致的学习到全文检索引擎制作技术和面向对象编程的实践,进而在此基础上根据应用的实际情况编写出更好的更适合当前应用的全文检索引擎。在这一点上,商业软件的灵活性远远不及LUCENE。其次,LUCENE秉承了开放源代码一贯的架构优良的优势,设计了一个合理而极具扩充能力的面向对象架构,程序员可以在LUCENE的基础上扩充各种功能,比如扩充中文处理能力,从文本扩充到HTML、PDF等等文本格式的处理,编写这些扩展的功能不仅仅不复杂,而且由于LUCENE恰当合理的对系统设备做了程序上的抽象,扩展的功能也能轻易的达到跨平台的能力。最后,转移到apache软件基金会后,借助于apache软件基金会的网络平台,程序员可以方便的和开发者、其它程序员交流,促成资源的共享,甚至直接获得已经编写完备的扩充功能。最后,虽然LUCENE使用Java语言写成,但是开放源代码社区的程序员正在不懈的将之使用各种传统语言实现(例如.net framework),在遵守LUCENE索引文件格式的基础上,使得LUCENE能够运行在各种各样的平台上,系统管理员可以根据当前的平台适合的语言来合理的选择[2]。

2.5互联网搜索引擎的研究

当今的搜索引擎大多采用集中式的搜索方式。搜索引擎结构大致分为:搜索器、索引器和检索器等几部分组成。搜索器就是人们所说的网络蜘蛛(Web Spider)或者叫网络

论文示例

机器人。通过这种Spider程序,可以从一个网页出发,通过提取其中的URL,在遵从Robot Exclusion协议的前提下,不断地提取得到的URL,并且下载本URL的资源;而索引器的主要工作则是利用下载的网络资源,提取索引项,用于生成文档库的索引表;检索器主要是通过理解用户的查询需求,在文档库中检索出文档并且进行快速匹配,然后进行相关性排序,通过链接网页提供给用户检索结果。至此,完成搜索。

这样就可以知道:只要LUCENE+”蜘蛛爬虫”+”网页相关度排名”,就可以成为一个真正意义上的搜索引擎,事实上LUCENE的创始人Doug Cutting已经开发了一个叫做”Nutch”的搜索引擎系统了,这个系统加上了“蜘蛛程序”可以对整个Internet的网页进行搜索,Nutch具体的逻辑关系图如下:

图2.1 Nutch逻辑关系图

真正的搜索引擎在搜索的时候就是和LUCENE采用一样的原理:在Index中遍历所有的Segments目录。而且一般中文分词也都是采用LUCENE的中文分词方法[8]。

2.6中文分词的简单介绍

切词[4]对于搜索结果来说是十分重要的环节,对于英文,只用关注空格即可实现切词,而对于中文,由于中文词汇非常丰富,词语的组成十分不固定,所以中文切词就变

论文示例

得比较困难。现在比较普遍的是中文单字切词、双字切词、字典切词,对于单字切词由于其一开始的不准确性就被很多人放弃,最准确的切词方法应该是字典切词,匹配方法大致有前向匹配、后向匹配和基于统计的匹配。举例来说,对于“中华人民”这句话,单字切词就是把这四个字一个作为一个词索引,搜索的时候逐字匹配,而双字索引是把这句话依次按两个字加以区分,分为“中华”,“华人”,“人民”这样切词。字典切词则是相对于词库来寻找哪个应该作为词,而哪个不是,由此也可以知道,字典切词是比较准确的,但是由于汉语词语的不断变化和扩充性,所以现在还要结合双字切词才可以更好地提高准确度。由于字典切词和双字切词的配合使用,搜索的匹配精度在很大程度上是可以得到保证的,LUCENE的切词方法,通过程序集LUCENE.Analysis来实现。

论文示例

3.LUCENE系统结构

3.1 LUCENE系统结构组织

LUCENE作为一个优秀的全文检索引擎[3],其系统结构具有强烈的面向对象特征。首先是定义了一个与平台无关的索引文件格式,其次通过抽象将系统的核心组成部分设计为抽象类,具体的平台实现部分设计为抽象类的实现,此外与具体平台相关的部分比如文件存储也封装为类,经过层层的面向对象式的处理,最终达成了一个低耦合高效率,容易二次开发的检索引擎系统。

以下将讨论LUCENE系统的结构组织,并给出系统结构与源码组织图如图3.1:

图3.1 系统结构与源码组织结构图

3.2 数据流分析

理解LUCENE系统结构的另一个方式是去探讨其中数据流的走向,并以此摸清楚LUCENE系统内部的调用时序。在此基础上,我们能够更加深入的理解LUCENE的系统结构组织,以方便以后在LUCENE系统上的开发工作。这部分的分析,是深入LUCENE系统的钥匙,也是进行重写的基础。

LUCENE系统中的主要的数据流以及它们之间的关系图如图3.2:

论文示例

图3.2 数据流图

图3.2很好的表明了LUCENE在内部的数据流组织情况,并且沿着数据流的方向我们也可以对与LUCENE内部的执行时序有一个清楚的了解。现在将图中的涉及到的流的类型与各个逻辑对应系统的相关部分的关系说明一下。

图中共存在4种数据流,分别是文本流、token流、字节流与查询语句对象流。文本流表示了对于索引目标和交互控制的抽象,即用文本流表示了将要索引的文件,用文本流向用户输出信息;在实际的实现中,LUCENE中的文本流采用了UCS-2作为编码,以达到适应多种语言文字的处理的目的。Token流是LUCENE内部所使用的概念,是对传统文字中的词的概念的抽象,也是LUCENE在建立索引时直接处理的最小单位;简单的讲Token就是一个词和所在域值的组合,后面在叙述文件格式时也将继续涉及到token,这里不详细展开。字节流则是对文件抽象的直接操作的体现,通过固定长度的字节(LUCENE定义为8比特位长,后面文件格式将详细叙述)流的处理,将文件操作解脱出来,也做到了与平台文件系统的无关性。查询语句对象流则是仅仅在查询语句解析时用到的概念,它对查询语句抽象,通过类的继承结构反映查询语句的结构,将之传送到查找逻辑来进行查找的操作。

论文示例

图中的涉及到了多种逻辑,基本上直接对应于系统某一模块,但是也有跨模块调用的问题发生,这是因为LUCENE的重用程度非常好,因此很多实现直接调用了以前的工作成果,这在某种程度上其实是加强了模块耦合性,但是也是为了避免系统的过于庞大和不必要的重复设计的一种折衷体现。词法分析逻辑对应于org.apache.LUCENE.analysis部分。查询语句语法分析逻辑对应于org.apache.LUCENE.queryParser部分,并且调用了org.apache.LUCENE.analysis的代码。查询结束之后向评分排序逻辑输出token流,继而由评分排序逻辑处理之后给出文本流的结果,这一部分的实现也包含在了org.apache.LUCENE.search中。索引构建逻辑对应于org.apache.LUCENE.index部分。索引查找逻辑则主要是org.apache.LUCENE.search,但是也大量的使用了org.apache.LUCENE.index部分的代码和接口定义。存储抽象对应于org.apache.LUCENE.store [5]。

3.3 LUCENE索引文件格式分析

3.3.1 LUCENE源码实现分析的说明

通过以上对LUCENE系统结构的分析,我们已经大致的清楚了LUCENE系统的组成,以及在LUCENE系统之上的开发步骤。接下来,我们试图来分析LUCENE项目(采用LUCENE 1.2版本)的源码实现,考察其实现的细节。这不仅仅是我们尝试用C++语言重新实现LUCENE的必须工作,也是进 …… 此处隐藏:2656字,全部文档内容请下载后查看。喜欢就下载吧 ……

全文检索及其在公文处理系统中的应用(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/43585.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)