全文检索及其在公文处理系统中的应用毕业设计论文Word文件下载.docx
《全文检索及其在公文处理系统中的应用毕业设计论文Word文件下载.docx》由会员分享,可在线阅读,更多相关《全文检索及其在公文处理系统中的应用毕业设计论文Word文件下载.docx(46页珍藏版)》请在冰豆网上搜索。
![全文检索及其在公文处理系统中的应用毕业设计论文Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-11/19/95fefada-1c99-4241-b435-cb70fbecbbd9/95fefada-1c99-4241-b435-cb70fbecbbd91.gif)
指导老师:
学院院长:
2008年5月23日
全文检索及其在公文处理系统中的应用
摘要
随着信息技术的发展,人们对信息查询效率的要求越来越高。
全文检索的发展和应用满足了大部分的需求。
LUCEN是一个开放源代码的全文检索引擎,并提供了完整的查询引擎和索引引擎,其目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。
本课题实际需求来源于本人在企业里实习时参与开发的公文处理系统,此系统要求具有站内搜索引擎的功能,能够对公文内容进行检索。
项目中的搜索引擎采用LUCENE实现,使得公文处理系统在内容检索郊率得到极大提高,站内搜索使整个系统的功能更加强大,为用户提供了更为便利的搜索功能。
本文对搜索引擎的原理、组成、数据结构、工作流程等方面做了深入而细致地研究与分析。
并且通过LUCENE来设计和实现一个全文检索站内搜索引擎系统,最后通过增量索引和优化索引两个方面来说明如何提高LUCENE的高效性。
关键词:
全文检索,搜索引擎,LUCENE
Full-TextSearchandItsImplementationinDocumentProcessingSystem
Author:
XiangjianZhao
Tutor:
ShaofeiLu
Withthedevelopmentoftheinformationtechnology,thedemandontheefficiencyofsearchinginformationhasbeengettinghigherandhigher.Andthedevelopmentandapplicationoffull-textretrievalsatisfymostofpeople.
LUCENEisatoolkitoffull-textsearchengineofopensource,anditprovideintegralinquireengineandindexengine.LUCENEisdesignedtoprovideasimple,easy-to-usetoolkitforsoftwaredevelopers,andit’sconvenienttorealizethefull-textretrievalfunctioninthetargetsystem,orasabasistoestablishtheintegralfull-textsearchengine.
Theactualrequirementsofthissystemoriginfrommydevelopmenton“DocumentProcessingSystem”whenIpracticedintheenterprise.Thesystemusesthefunctionofstationsearchengine.IusetheLUCENEtorealizethesearchengineinit.Nowforstableoperation,stationsearchmakethefunctionofthewholesystembecomemorepowerful,andtoprovideuserswithamoreconvenientsearchfunction.
Ihavecarefullystudiedandanalysissearchenginesprinciple,composition,datastructure,andworkflow,andhavedesignedandrealizedafull-textretrievalstationssearchenginebymeansofLUCENE.Finally,bothtoIillustratehowtoimprovetheefficiencyofLUCENEthroughtwoaspects,theincrementindexandtheoptimizationindex.
KeyWords:
Full-TextSearch,SearchEngine,Lucene,
1.绪论
1.1课题背景
随着现在网络信息化的迅速普及与发展,获取网络上面的有用信息成为人们使用的网络的主需要之一,所以搜索技术成为达到获取有用信息的主要技术,由此互联网搜索引擎应运而生,像Google,Baidu等公司在基于互联网络的搜索中在给人们提供方便的同时公司本身也取得了巨大的成功。
但是目前的站内搜索引擎做得还不是很好,普遍存在搜索精度差,搜索时间长,扩展性不够强等缺点,能够可以供给网站免费使用和学习的站内搜索引擎就更少了,这样就造成了有些网站没有站内搜索引擎或者搜索引擎不好用的局面,这对网站本身的用户体验显然是不能令人满意的,所以站内搜索引擎成为一个网站必不可少的功能之一。
本系统的需求来源于公文处理系统,这是本人在公司实习的时候做的一个项目,其中站内搜索功能是一个必不可少的功能之一,这个系统非常需要这样一个站内搜索的功能,能够搜索指定的公文文档的内容,所以为公文处理系统建立一个站内搜索功能成为了一个现实存在的需求,于是设计和开发出一个通用的站内搜索引擎是一个非常具有现实意义的研究。
1.2课题目前研究情况及存在问题
目前有一些成熟的搜索引擎可以使用,但是都是用于商业,一般不公开源代码,学习起来比较困难,所以一些开源的项目成为设计时的首选,经过对搜索技术的研究,在Apache上发现了一个JAVA实现的用于搜索的开源项目LUCENE,LUCENE目前是公认的最好的搜索方面的开源项目之一,现在LUCENE已经成功的被移植到C,Perl、Python、C++、.NET及Ruby版本,所以其扩展性比较好,可以适用于大多数的平台,所以是开发站内搜索引擎的最理想的技术,但是目前存在若干问题:
1、LUCENE默认是不支持中文搜索的,所以要通过扩展其API使其支持中文搜索以及实现基本的中文分词。
2、由于公司项目的具体需求,以后将会遇到多条件的搜索,以及搜索SQLSERVER数据库和联合多个目录进行的搜索问题。
3、出于系统的某些信息的保密性,要限制某些信息被搜索到,要考虑如何保护文件的私密性。
1.3论文组织结构
第2章介绍全文检索系统与LUCENE。
第3章介绍LUCENE系统结构。
第4章介绍本系统的设计与实现。
第5章检索结果分析。
第6章介绍系统开发过程应用到的几点关键技术。
总结部分介绍整个开发过程中的体会与认识,并指出目前系统中的不足和改进方向。
本文主要从基于LUCENE的全文检索入题,阐述了全文检索的工作原理,延续到全文检索在公文处理系统中的设计与实现,最后总结出全文检索的效率与在公文处理系统中的应用效果。
2.全文检索与LUCENE
2.1全文检索与全文检索简介
全文检索[1]是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。
这个过程类似于通过字典中的检索字表查字的过程。
全文检索的方法主要分为按字检索和按词检索两种。
按字检索是指对于文章中的每一个字都建立索引,检索时将词分解为字的组合。
对于各种不同的语言而言,字有不同的含义,比如英文中字与词实际上是合一的,而中文中字与词有很大分别。
按词检索指对文章中的词,即语义单位建立索引,检索时按词检索,并且可以处理同义项等。
英文等西方文字由于按照空白切分词,因此实现上与按字处理类似,添加同义处理也很容易。
中文等东方文字则需要切分字词,以达到按词索引的目的,关于这方面的问题,是当前全文检索技术尤其是中文全文检索技术中的难点,在此不做详述。
全文检索系统是按照全文检索理论建立起来的用于提供全文检索服务的软件系统。
一般来说,全文检索需要具备建立索引和提供查询的基本功能,此外现代的全文检索系统还需要具有方便的用户接口、面向WWW的开发接口、二次应用开发接口等等。
功能上,全文检索系统核心具有建立索引、处理查询返回结果集、增加索引、优化索引结构等等功能,外围则由各种不同应用具有的功能组成。
结构上,全文检索系统核心具有索引引擎、查询引擎、文本分析引擎、对外接口等等,加上各种外围应用系统等等共同构成了全文检索系统。
图1.1展示了上述全文检索系统的结构与功能。
在1.1图中,我们看到:
全文检索系统中最为关键的部分是全文检索引擎,各种应用程序都需要建立在这个引擎之上。
一个全文检索应用的优异程度,根本上由全文检索引擎来决定。
因此提升全文检索引擎的效率即是我们提升全文检索应用的根本。
另一个方面,一个优异的全文检索引擎,在做到效率优化的同时,还需要具有开放的体系结构,以方便程序员对整个系统进行优化改造,或者是添加原有系统没有的功能。
比如在当今多语言处理的环境下,有时需要给全文检索系统添加处理某种语言或者文本格式的功能,比如在英文系统中添加中文处理功能,在纯文本系统中添加XML或者HTML格式的文本处理功能,系统的开放性和扩充性就十分的重要。
图1.1全文检索系统结构
2.2全文检索系统与数据库比较
全文检索的实现机制:
LUCENE的API接口设计的比较通用,输入输出结构都很像数据库的表==>
记录==>
字段,所以很多传统的应用的文件、数据库等都可以比较方便的映射到LUCENE的存储结构/接口中。
总体上看:
可以先把LUCENE当成一个支持全文索引的数据库系统。
如表2.1比较一下LUCENE和数据库:
全文检索≠like"
%keyword%"
。
通常比较厚的书籍后面常常附关键词索引表(如:
北京:
12,34页,上海:
3,77页……),它能够帮助读者比较快地找到相关内容的页码。
而数据库索引能够大大提高查询的速度原理也是一样,想像一下通过书后面的索引查找的速度要比一页一页地翻内容高多少倍……而索引之所以效率高,另外一个原因是它是排好序的。
对于检索系统来说核心是一个排序问题。
由于数据库索引不是为全文索引设计的,因此,使用like"
时,数据库索引是不起作用的,在使用like查询时,搜索过程又变成类似于一页页翻书的遍历过程了,所以对于含有模糊查询的数据库服务来说,LIKE对性能的危害是极大的。
如果是需要对多个关键词进行模糊匹配:
like"
%keyword1%"
andlike"
%keyword2%"
...其效率也就可想而知了。
表2.1LUCENE和数据库结构的比较
LUCENE
数据库
索引数据源:
doc(field1,field2...)doc(field1,field2...)
\indexer/
--------------
|LUCENEIndex|
/searcher\
结果输出:
Hits(doc(field1,field2)doc(field1