




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、什么是全文检索与全文检索系统?全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。全文检索的方法主要分为按字检索和按词检索两种。按字检索是指对于文章中的每一个字都建立索引,检索时将词分解为字的组合。对于各种不同的语言而言,字有不同的含义,比如英文中字与词实际上是合一的,而中文中字与词有很大分别。按词检索指对文章中的词,即语义单位建立索引,检索时按词检索,并且可以处理同义项等。英文等西方文字由于按照空白
2、切分词,因此实现上与按字处理类似,添加同义处理也很容易。中文等东方文字则需要切分字词,以达到按词索引的目的,关于这方面的问题,是当前全文检索技术尤其是中文全文检索技术中的难点,在此不做详述。全文检索系统是按照全文检索理论建立起来的用于提供全文检索服务的软件系统。一般来说,全文检索需要具备建立索引和提供查询的基本功能,此外现代的全文检索系统还需要具有方便的用户接口、面向WWWWWW11的开发接口、二次应用开发接口等等。功能上,全文检索系统核心具有建立索引、处理查询返回结果集、增加索引、优化索引结构等等功能,外围则由各种不同应用具有的功能组成。结构上,全文检索系统核心具有索引引擎、查询引擎、文本分
3、析引擎、对外接口等等,加上各种外围应用系统等等共同构成了全文检索系统。图1.11.1展示了上述全文检索系统的结构与功能。全文检索系统图1.11.1全文检索系娟构在上图中,我们看到:全文检索系统中最为关键的部分是全文检索引擎,各种应用程序都需要建立在这个引擎之上。一个全文检索应用的优异程度,根本上由全文检索引擎来决定。因此提升全文检索引擎的效率即是我们提升全文检索应用的根本。另一个方面,一个优异的全文检索引擎,在做到效率优化的同时,还需要具有开放的体系结构,以方便程序员对整个系统进行优化改造,或者是添加原有系统没有的功能。比如在当今多语言处理的环境下,有时需要给全文检索系统添加处理某种语言或者文
4、本格式的功能,比如在英文系统中添加中文处理功能,在纯文本系统中添加XMLXML22或者HTMLHTML33格式的文本处理功能,系统的开放性和扩充性就十分的重要。二、什么是Lucene?Lucene?LuceneLucene是apacheapache软件基金会44jakartajakarta项目组的一个子项目,是一个开放源代码冏的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。LuceneLucene传统应用程序检索引擎开发接的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系
5、统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。LuceneLucene的原作者是DougCuttingDougCutting他是一位资深全文索引/ /检索专家,曾经是V-TwinV-Twin搜索引擎66的主要开发者,后在ExciteExcite7 7担任高级系统架构设计师,目前从事于一些InternetInternet底层架构的研究。早先发布在作者自己的http:/ ,后来发布在SourceForgSourceForg能,20012001年年底成为apacheapache软件基金会jakartajakarta的一个子项目:/l
6、ucene//lucene/。三、LuceneLucene科应用、特点及优势作为一个开放源代码项目,LuceneLucene从问世之后,引发了开放源代码社群的巨大反响,程序员们不仅使用它构建具体的全文检索应用,而且将之集成到各种系统软件中去,以及构建WebWeb应用,甚至某些商业软件也采用了LuceneLucene作为其内部全文检索子系统的核心。apacheapache软件基金会的网站使用了LuceneLucene作为全文检索的引擎,旧M M的开源软件eclipseeclipse的2.12.1版本中也采用了LuceneLucene作为帮助子系统的
7、全文索引引擎,相应的旧M M的商业软件WebWebSphereSphere1010中也采用了LucenaLuceneLucenaLucene以其开放源代码的特性、优异的索引结构、良好的系统架构获得了越来越多的应用。LuceneLucene作为一个全文检索引擎,其具有如下突出的优点:(1)(1)索引文件格式独立于应用平台。LuceneLucene定义了一套以8 8位字节为基础的索引文件格式,使得兼容系统或者不同平台的应用能够共享建立的索引文件。(2)(2)在传统全文检索引擎的倒排索引的基础上,实现了分块索引,能够针对新的文件建立小文件索引,提升索引速度。然后通过与原有索引的合并,达到优化的目的。
8、(3)(3)优秀的面向对象的系统架构,使得对于LuceneLucene扩展的学习难度降低,方便扩充新功能。(4)(4)设计了独立于语言和文件格式的文本分析接口,索引器通过接受TokenToken流完成索引文件的创立,用户扩展新的语言和文件格式,只需要实现文本分析的接口。(5)(5)已经默认实现了一套强大的查询引擎,用户无需自己编写代码即使系统可获得强大的查询能力,LuceneLucene的查询实现中默认实现了布尔操作、模糊查询(FuzzyFuzzySearchSearch1111) )、分组查询等等。面对已经存在的商业全文检索引擎,LuceneLucene也具有相当的优势。首先,它的开发源代码
9、发行方式(遵守ApacheSoftwareLicensgApacheSoftwareLicensg2 2), ,在此基础上程序员不仅仅可以充分的利用LuceneLucene所提供的强大功能,而且可以深入细致的学习到全文检索引擎制作技术和面相对象编程的实践,进而在此基础上根据应用的实际情况编写出更好的更适合当前应用的全文检索引擎。在这一点上,商业软件白灵活性远远不及LucenaLucena其次,LuceneLucene秉承了开放源代码一贯的架构优良的优势,设计了一个合理而极具扩充能力的面向对象架构,程序员可以在LuceneLucene的基础上扩充各种功能,比如扩充中文处理能力,从文本扩充到HTM
10、LHTML、PD/PD/33等等文本格式的处理,编写这些扩展的功能不仅仅不复杂,而且由于LuceneLucene恰当合理的对系统设备做了程序上的抽象,扩展的功能也能轻易的达到跨平台的能力。最后,转移到apacheapache软件基金会后,借助于apacheapache软件基金会的网络平台,程序员可以方便的和开发者、其它程序员交流,促成资源的共享,甚至直接获得已经编写完备的扩充功能。最后,虽然LuceneLucene使用JavaJava语言写成,但是开放源代码社区的程序员正在不懈的将之使用各种传统语言实现(例如framework1414),),在遵守LuceneLucene索引文件格式的基础上,
11、使得LuceneLucene能够运行在各种各样的平台上,系统管理员可以根据当前的平台适合的语言来合理的选择。四、本文的重点问题与cLucencLucene e项目作为中国人民大学信息学院9999级本科生的一个毕业设计项目,我们对LuceneLucene进行了深入的研究,包括系统的结构,索引文件结构,各个部分的实现等等。并且我们启动了cLucenecLucene项目,做为一个LuceneLucene的C+C+钻言的重新实现,以期望带来更快的速度和更加广泛的应用范围。我们先分析了系统结构,文件结构,然后在研究各个部分的具体实现的同时开始进行的cLucenecLucene实现。限于时间的限制,到本文
12、完成为止,cLucenecLucene项目并没有完成,对于LuceneLucene的具体实现部分也仅仅完成到了索引引擎部分。接下来的部分,本文将对LuceneLucene的系统结构、文件结构、索引引擎部分做一个彻底的分析。以期望提供对LuceneLucene全文检索引擎的系统架构和部分程序实现的清晰的了解。cLucenecLucene项目则作为一个开放源代码的项目,继续进行的开发。有关cLucenecLucene项目的一些信息:开发语言:ISOC+ISOC+1515, ,STLportSTLport.31616, ,OpenTopOpenTop1.11.11717目标平台:Wi
13、n32Win32, ,POSIXPOSIX授权协议:GNUGeneralPublicLicenseGNUGeneralPublicLicense(GPLGPL8 8 ApacheLucene与其兄弟Lucene.Net是经过了大规模测试的产品,他们已经为一些著名站点如Wikipedia、CNET及M提供了搜索功能。因此,没人会怀疑其功能与未来的发展。Lucene并不是一个爬行搜索引擎,也不会自动地索引内容。我们得先将要索引的文档中的文本抽取出来,然后再将其加到Lucene索引中。标准的步骤是先初始化一个Analyzer、打开一个IndexWriter、然后再将文档一个接一个地加进去。一旦完成这
14、些步骤,索引就可以在关闭前得到优化,同时所做的改变也会生效。这个过程可能比开发者习惯的方式更加手工化一些,但却在数据的索引上给予你更多的灵活性。我们可以借助于一个对象模型来完成搜索,通过查询来建立条件。其次,Lucene可以解析并执行(可能由最终用户输入的)普通文本搜索字符串。使用.NET3.5或后续版本的.NET开发者还有第三种选择:LINQtoLucene。其项目主页上有一张图清晰地描述了Lucene的搜索语法与相应的LINQtoLucene语法的区别。与言说起ApacheLucene,可以说无人不知,无人不晓,但是说道ApacheSolr,恐怕知道的不多。看看ApacheSolr的说明:
15、Solr是一个基于Lucenejava库的企业级搜索服务器,包含XML/HTTPJSONAPI,高亮查询结果,facetedsearch(不知道该如何翻译,片段式搜索),缓存,复制还有一个WEEBff理界面。Solr运行在Servlet容器中。所以Solr和Lucene的本质区别有以下三点:搜索服务器,企业级和管理。Lucene本质上是搜索库,不是独立的应用程序, 而Solr是。Lucene专注于搜索底层的建设, 而Solr专注于企业应用。Lucene不负责支撑搜索服务所必须的管理,而Solr负责。所以说,一句话概括Solr:Solr是Lucene面向企业搜索应用的扩展。在本篇文章中,我们先看
16、看Solr向我们承诺了什么,或者说Solr宣称的特性们。无废话SolrSolr是一个拥有象WebService一样接口的独立运行的搜索服务器。你将能够通过HTTP议以XMLB式将文档放入搜索服务器(这个过程叫做索引),你能够通过HTTPB议的GE怵查询搜索服务器并且得到XML格式的结果。Solr的特性包括:高级的全文搜索功能专为高通量的网络流量进行的优化基于开放接口(XMLf口HTTP的标准综合的HTMLT理界面可伸缩性能够有效地复制到另外一个Solr搜索服务器使用XML配置达到灵活性和适配性可扩展的插件体系Solr使用Lucene并且扩展了它!一 个 真 正 的 拥 有 动 态 域(Dyna
17、micField)和 唯 一 键(UniqueKey)的 数 据 模 式(DataSchema)对Lucene查询语言的强大扩展!支持对结果进行动态的分组和过滤高级的,可配置的文本分析高度可配置和可扩展的缓存机制性能优化支持通过XMLS行外部配置拥有一个管理界面可监控的日志支持高速增量式更新(FastincrementalUpdates)和快照发布(SnapshotDistribution)Schema(模式),定义域类型和文档的域能够驱动智能处理声明式的Lucene分析器规范动态域能够随时增加域拷贝域功能允许对一个域进行多种方式的索引,或者将多个域联合成一个可搜索的域显式类型能够减少对域类型
18、的猜测能够使用外部的基于文件的终止词列表,同义词列表和保护词列表的配置查询拥有可配置响应格式(XML/XSLT,JSON,Python,Ruby的HTT脸口高亮的上下文搜索结果基于域值和显式查询的片段式搜索(FacetedSearch)对查询语言增加了排序规范常量的打分范围(Constantscoringrange)和前缀式查询没有idf,coord,或者lengthNorm因子,对查询匹配的词没有数量限制函数查询(FunctionQuery)-通过关于一个域的数值或顺序的函数对打分进行影响性能优化核心可插拔的查询句柄(QueryHandler)和可扩展的XM做据格式使用唯一键的域能够增强文档
19、唯一性能够高效地进行批量更新和删除用户可配置的文档索引变化触发器(命令)并发控制的搜索器能够正确处理数字类型,从而能够进行排序和范围搜索能够控制缺失排序域的文档支持搜索结果的动态分组缓存可配置的查询结果,过滤器,和文档缓存实例可插拔的缓存实现后台缓存热启:当一个新的搜索器被打开时,可配置的搜索将它热启,避免第一个结果慢下来,当热启时,当前搜索器处理目前的请求(?)。后台自动热启:当前搜索器缓存中最常访问的项目在新的搜索器中再次生成,能够在索引器和搜索器变化的时候高速缓存常查询的结果快速和小的过滤器实现支持自动热启的用户级别的缓存复制能够将使用rsync传输时改变的索引部分有效的发布使用拉策略(PullStrategy)来简化增加搜索器可配置的发布间隔能够允许对时间线和缓存使用进行权衡选择管理接口能够对缓存使用,更新和查询进行综合统计文本分析调试器,能够显示每个分析器每个阶段的结果基于WEB勺查询和调试输出:解析查询输出,Lucene的explain方法细节,能够解释为何某个文档打分低,被排除在结果中等等索引和搜索索引是现代搜索引擎的核心, 建立索引的过程就是把源数据处理成非常方便查询的索引文件的过程。 为什么索引这么重要呢
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教育行业假期旅游证明(6篇)
- 现代汽车技术与维修实践题集
- 水利水电工程考试全景预测与试题及答案
- 社会化媒体与公共关系的融合试题及答案
- 经济法概论新颖试题及答案分享
- 2025年市政工程职业规划与试题答案
- 行政管理与公关理论的结合试题及答案
- 美术课件简笔画
- 2025年工程项目管理复习的窍门及试题及答案
- 工程项目管理过程创新试题及答案
- 雨淋报警阀的操作规程
- GB/T 4942-2021旋转电机整体结构的防护等级(IP代码)分级
- GB/T 19876-2012机械安全与人体部位接近速度相关的安全防护装置的定位
- 矿山安全生产责任制汇编
- 房屋外立面改造施工组织设计方案
- 小学四年级道德与法治下册9《生活离不开他们》课件
- 实验室安全记录表
- 商品房交房验收项目表格
- 浅析幼儿攻击性行为产生的原因及对策
- 以“政府绩效与公众信任”为主题撰写一篇小论文6篇
- 贵州版二年级综合实践活动下册-教学计划
评论
0/150
提交评论