基于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索引文件格式、文件组成、索引创建过程,并重点研究了段Segment文件的存储结构。经研究表明,创建单一且重用的文档实例以及提高使用的内存大小可有效提高索引使用效率。   关键词:索引;Lucene;搜索引擎   中图分类号:TP393 文献标识码:A   1 引言(Introduction)   在Lucence中包括了几个基础的概念,分别是索引、段、文档、域和项。其中索引由段构成,段由文档构成,因此索引可以理解为包含了多个文档的序列。文档由域构成,域由项构成,项是索引中最小构成单位,其本质是一个字符串。段是索引数据存储的基本单元,多个段之间彼此独立,当添加新的文档时将生成新的段,且段可以合并。   充分理解Lucence索引的内部结构,对于在当前互联网大数据、云存储应用环境下较好使用Lucence进行具有重要意义。   2 索引文件结构(Index file structure)   2.1 倒排索引   对文本信息进行检查的系统索引可以分为包括正排索引和倒排索引[1]。在实际使用中根据属性值查找记录的过程称为倒排索引。倒排表中存储了文档中包含的单词,文档编号差值、单词出现次数等,这些信息即组成了倒排索引项term。   倒排索引入口为索引项term,通过倒排索引可以找到包含每个term的文档集合称为记录表,记录表中包含文档号及term在该文档中的出现频率。   Lucene为了使得基于term的检索效率更高,索引存储terms的统计数据。Lucene的索引采用了倒排索引。它可以列举,包含一个term的所有文档。这与自然关联规则相反,即由documents列举它所包含的terms。   2.2 域Fields   Lucene在存储域数据时,域中文本被逐字的以非倒转方式进行转换,这些被倒排存储的域数据可以被索引[2]。每个域的文本被拆分为多个索引项以便被高效索引,另一种方式为域中文本作为一个索引项进行索引。   2.3 片断   Lucene索引可以由多个复合的子索引或片段构成。每个段是一个完全独立的索引,它可以分离提取进行检索。检索过程如下:(1)当添加新的文档时创建新的段;(2)对现有段进行合并。在索引检索时,会涉及多个索引或段,因此每一个索引都隐含包括了一组段。段及文档关系如图1所示。   图1 Lucene索引片段   Fig.1 The Lucene index fragments   2.4 文档编号   在Lucene的内部对于每个文档使用一个整数编号进行标识。初始情况下,第一个被加进来的文档其文档编号为0,之后加进来的文档其编号自动递增,采用自动递增方式对文档进行编号,编号不会出现重复。但需注意的是,文档编号可以被手动更改。因此在维护时若出现更改情况,需特别考虑此编号是否在更大的范围内被使用。通常的做法是为每个段空间设置文档编号的范围,以保证段之间的文档编号不重复。   综上所述,文档编号若发生修改可能导致错误,因此文档编号应先进行设计,在应用时不轻易、不频繁修改文档编号,只有当出现文档在某段空间是统一的,且需要在整个系统中使用时必须修改情况下才进行修改。   3 索引文件(Index file)   3.1 索引文件   Lucene索引文件包含多种,其使用不同的文件扩展名来进行标识。同时文件名称可以标识不同的版本。常见的文件扩展名有:fnm文件存储域名和域属性、fdt文件存储域数据、fdx文件存储在fdt文件中的偏移位置、frq存储文件中项的位置数据等。对于段文件命名通常为segments_x,其中x即为最新修改版本,文件segments.gen存储当前版本值。以下文件存在于每个索引index中,并且只有一份。   (1)Segments文件   索引中活动的Segments被存储在segment info文件中,segments_N,在索引中可能会包含一个或多个segments_N文件。然而,最大一代的那个文件是活动的片断文件(这时更旧的segments_N文件依然存在是因为它们暂时还不能被删除,或者,一个writer正在处理提交请求,或者一个用户定义的IndexDeletionPolicy正被使用。这个文件按照名称列举每一个片断,详细描述分离的标准和要删除的文件,并且还包含了每一个片断的大小。   (2)Lock文件   写锁文件名为“write.lock”,存储在默认的索引目录中。如果锁目录和索引目录不一致的,写锁将被命名为“XXXX-write.lock”,其中“XXXX”是

文档评论(0)

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

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

1亿VIP精品文档

相关文档