Lucene索引技术研究.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Lucene索引技术研究

Lucene索引技术研究   [摘要]信息技术的飞速发展使得信息资源日剧丰富,而基于传统的数据库精确匹配的查询方式已不能满足海量信息检索的需求。为达到检索的速度快,查的准,查的全的目标,目前最有效方法是建立辅助的数据结构――倒排索引。利用关键词直接确定文档列表,关键词是和文档有着对应的关系,确定关键词就确定文档,速度极快,是与传统的顺序查找和记录组织方式相反的,因此称为倒排引,Lucene就采用倒排索引。因此,将从项目设计规划的角度分析研究Lucene索引的结构,建立,及优化,并提出一种索引维护的方案。   [关键词]倒排索引索引段索引域复合索引   中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)1220064-01      一、概述      Lucene最初是由Doug Cutting编写的,2000年3月在SourceForge上第一次发布0.01版本[3],2001年9月加入到Apache软件基金会的高质量开源Java产品系列。到2004年8月,已经发布了2.4版,可见发展的是如此快。它是一个开源的全文检索引擎工具包,是apache软件基金会jakarta项目组的一个子项目,它提供了完整的查询引擎和索引引擎,对数据的索引和查询提供了丰富的接口,适用于有数据源或者可以提供数据源,且要为这些数据提供一个搜索界面的场景。      二、Lucene的索引结构和如何索引      Lucene索引结构分为索引,索引段,索引文档,索引域和索引项。每个索引由一个或者多个段组成,每个段包含一个或多个文档,每个文档管理了一个或多个域,每个域由一个或多个索引项组成。   如何建立索引呢?接下来就研究下Lucene是如何建立索引的。首先将不同格式的文档通过相应的解析器解析成文本,再用分析器对文本进行分析,主要是做分词,以构建倒排索引,最后,建立索引。   程序示例如下:   其中16―19相当于解析器,将PDF文件内容解析出来,20数构建索引器,参数是索引存放的位置,和对文本分析用到的分析器,21创建Lucene文档,22数创建Field,24添加域,25关闭索引器,释放资源。我们可以一个索引文件看作一个数据库表,Document就是数据库表的一条记录,Field就是数据表中的一条记录的记录项。      三、索引的优化      通过以上的方法就可以建立索引了,但效率不高。为了加快索引和搜索的速度,我们需要对索引进行优化。Lucene提供了优秀的索引的优化机制,Lucene中的cfs文件就是复合式索引格式的索引文件,它相当于多个索引文件的合并而成,Lucene复合式索引文件有效地减少了索引文件的数量。IndexWriter类通过setUseCompoundFile()方法可以设置是否使用复合式索引的文件格式,默认值是true。   Lucene对索引进行优化,提供了一些优化参数:   1.mergeFactor用来控制索引块的合并频率和大小,默认值是10,也就是说在将Document对象写入磁盘前,Lucene会在内存中默认存储10个Document对象,同时当磁盘上的索引块达到10的乘方时,Lucene会将这些块合并为一个段。   2.maxMergeDocs用来限制每个索引块的文档的数量,默认值是Integer.MAX_VALUE。   3.maxBufferedDocs用来限制内存中的文档数量,默认值是10,其值越大,在内存中存储的文档数量越多,越消耗内存,但I/O减少了,使得使用更多的内存空间换取更快的索引。   为了将索引缓存起来,Lucene也为IndexWriter提供了另一个构造方法:IndexWriter(Directory d,Analyzer a,Boolean b)。   第一个参数可以是RAMDirectroy或者FSDirectroy的实例,前者是在内存中建立索引,建立索引的方式非常快,但不能永久保存,后者是在磁盘中建立索引。鉴于二者的特点,我们可以先在内存中建立索引,再写入磁盘,这样既提高了速度,又可以永久的保存数据。   具体步骤:(1)建立基于RAMDirectroy的索引;(2)向基于RAMDir   ectroy添加文档;(3)建立基于FSDirectroy的索引;(4)把缓存在RAMDirectroy中的数据写入FSDirectroy中。同时,Lucene还为索引本身提供了优化的方法,InderWriter有方法:optimize()。当索引建立好后调用这个方法,会使多个索引文件合并成单个文件。   四、索引的维护   索引维护可以采用自增量索引和全增量索引,自增量索引就是只对新数据进行索引,把新的索引添加到原来

文档评论(0)

3471161553 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档