Lucene系列-索引文件
本文介绍下lucene生成的索引有哪些文件组成,每个文件包含了什么信息。基于Lucene 4.10.0。
数据结构
索引(index)包含了存储的文档(document)正排、倒排信息,用于文本搜索。索引又分为多个段(segments),每个新添加的doc都会存到一个新segment中,不同的segments又会合并成一个segment。segment存储着具体的documents,每个doc有一系列的字段(field)组成,一个field的值是多个词(term),一个term是以一些bytes。其递进关系如下:
index -> segments -> documents -> fields -> terms
文件介绍
全局性文件
segments_N: 记录索引的段数、各段名、各段中文档数、删除数和更新数。可能有多个segments_N文件,最大N的segments_N是有效文件。
segments.gen: 记录当前index的代数(generation),即segments_N的最大N
write.log:阻止多个IndexWriter同时修改索引,一次只能有一个IndexWriter
段文件
- 段描述
xxx.si: 段的元数据,如此段的文档数及相关文件
xxx.del:删除的doc - field信息
xxx.fnm:field names,field名称、索引方式
xxx.fdx:field index,索引xxx.fdt
xxx.fdt:field data,存储stored fields - term信息
xxx.tip:term index,xxx.tim的索引,实现对xxx.tim的随机存取
xxx.tim:term dictionary,按字典顺序排列的terms,其值指向.doc/.pos
xxx.doc:倒排列表,term所在的docs、在doc中的频率
xxx.pos:倒排列表,term在doc中的位置
xxx.pay:payloads and offsets,term在doc中的offset
注意:term的位置及频率都是在某doc下term在field中的位置和偏移,位置以切词为单位,偏移以字符为单位 - term vector
term vector用于打分,存储StoreTermVectors的field
xxx.tvx:term vector index,每个doc在xx.tvd、xx.tvf中的位置
xxx.tvd:term vector data file,每个doc的term vector field信息在xxx.tvf中的位置
xxx.tvf:term vector fields,field的term列表及各term的频率、位置或者偏移 - 归一化
lucene为doc算分时根据各doc中的term weight(term对doc的重要性),但是不同的doc重要性不同、不同的field重要性不同、不同的文档长度也不同,要想让不同文档的term weight之间有可比性(打分有可比性)需要进行归一化。用于归一化的因子(normalization factors),如doc和field的boost factor及长度,存在如下文件中。
xxx.nvm:norms metadata
xxx.nvd:norms data - doc values
存储DocValues类型的field,通过field value可以获取对应的doc number列表, 便于进行一些概括或者打分。类型为docvalue的field在doc不能重名。
xxx.dvm:DocValues metadata
xxx.dvd:DocValues data
总结
从上节可以看出正排信息存储在:段(segments_N) -> field (.fnm/.fdx/.fdt) -> term (./tvx/.tvd/.tvf)
倒排信息存储在:词典(.tim) ->倒排表(.doc/.pos)
参考见:
https://lucene.apache.org/core/4_10_0/core/org/apache/lucene/codecs/lucene410/package-summary.html#package_description
https://lucene.apache.org/core/3_0_3/fileformats.html
http://www.cnblogs.com/forfuture1978/archive/2009/12/14/1623597.html
Lucene系列-索引文件的更多相关文章
- Solr4.8.0源码分析(12)之Lucene的索引文件(5)
Solr4.8.0源码分析(12)之Lucene的索引文件(5) 1. 存储域数据文件(.fdt和.fdx) Solr4.8.0里面使用的fdt和fdx的格式是lucene4.1的.为了提升压缩比,S ...
- Solr4.8.0源码分析(11)之Lucene的索引文件(4)
Solr4.8.0源码分析(11)之Lucene的索引文件(4) 1. .dvd和.dvm文件 .dvm是存放了DocValue域的元数据,比如DocValue偏移量. .dvd则存放了DocValu ...
- Solr4.8.0源码分析(10)之Lucene的索引文件(3)
Solr4.8.0源码分析(10)之Lucene的索引文件(3) 1. .si文件 .si文件存储了段的元数据,主要涉及SegmentInfoFormat.java和Segmentinfo.java这 ...
- Solr4.8.0源码分析(9)之Lucene的索引文件(2)
Solr4.8.0源码分析(9)之Lucene的索引文件(2) 一. Segments_N文件 一个索引对应一个目录,索引文件都存放在目录里面.Solr的索引文件存放在Solr/Home下的core/ ...
- Solr4.8.0源码分析(8)之Lucene的索引文件(1)
Solr4.8.0源码分析(8)之Lucene的索引文件(1) 题记:最近有幸看到觉先大神的Lucene的博客,感觉自己之前学习的以及工作的太为肤浅,所以决定先跟随觉先大神的博客学习下Lucene的原 ...
- lucene大索引文件分布式存储方案
这几天实现了个Lucene分布式检索的模块,采用的分布式方案是将数据分块,分别生成N个索引文件,放到N个节点上运行.检索时,对每一个节点发出查询请求,将N个节点返回的结果归并,然后生成一个新的结果.如 ...
- Lucene实现索引和查询
0引言 随着万维网的发展和大数据时代的到来,每天都有大量的数字化信息在生产.存储.传递和转化,如何从大量的信息中以一定的方式找到满足自己需求的信息,使之有序化并加以利用成为一大难题.全文检索技术是现如 ...
- Lucene的索引不跨平台
在windows上使用Lucene生成索引文件,将索引文件复制到Linux服务器上,报错"校验错误,可能是硬件问题". 所以,Lucene的跨平台只是代码跨平台,生成的索引不跨平台 ...
- Lucene索引文件学习
最近在做搜索,抽空看一下lucene,资料挺多的,不过大部分都是3.x了--在对着官方文档大概看一下. 优化后的lucene索引文件(4.9.0) 一.段文件 1.段文件:segments_5p和s ...
随机推荐
- ASP.NET c# textbox 正则表达式 文本框只允许输入数字(验证控件RegularExpressionValidator )
<input type="text" name="test" onKeyUp="test1.value=(this.value=this.val ...
- 类Arrays
package p2; import java.util.Arrays; import java.util.List; public class ArraysDemo { public static ...
- Oracle 11g 导库导不出空表问题
Oracle11g 会遇到这样的问题,用exp整库导出的时候,会遇到这样的问题,库里的空表没办法导出 select * from all_all_tables aa where aa.owner='U ...
- 原生ajax基础
/*ajax对象的成员常用属性:responseText:以字符串形式接收服务器端返回的信息responseXML:以Xml Document对象形式接收服务器返回的信息readyState:返回当前 ...
- js性能优化
使用局部变量(尽量缩短作用域链)JavaScript引擎对变量的解析时间跟作用域链的深度有关.局部变量由于处于链尾,存取速度是最快的,因此,一个好的经验是:任何非局部变量使用超过一次时,请使用局部变量 ...
- HttpWatch的Result中出现Aborted的原因分析[配图]
我们在使用HttpWatch进行Web调试的过程中有时候会看到非HTTP Status Code(状态码)的值,例如:(Aborted). (Aborted)是HttpWatch中定义的三种非HTTP ...
- hdu 2896 AC自动机
// hdu 2896 AC自动机 // // 题目大意: // // 给你n个短串,然后给你q串长字符串,要求每个长字符串中 // 是否出现短串,出现的短串各是什么 // // 解题思路: // / ...
- ubuntu安装日文分词软件MeCab及其Python插件
1.从官网上下载三个包: http://taku910.github.io/mecab/ mecab-0.996 mecab-0.996.tar.gz mecab-ipadic-2.7.0-20070 ...
- B树系列
参见 http://blog.csdn.net/quitepig/article/details/8041308
- php图片处理类库 Image
image 下载地址 https://github.com/Intervention/image.git 下载之后解压 执行composer update 生成 autoload.php文件 该类 ...