ElasticSearch 运维

lucene索引文件格式-概览

2019-04-17  本文已影响0人  尹亮_36cd

Apache Lucene - 索引文件格式

介绍

本文档定义了此版本(4.10.4)Lucene中使用的索引文件格式,如果您使用的是不同版本的Lucene,请查阅和您使用的版本一起发布的docs文档。

Apache Lucene是用Java编写的,但是正在做一些努力来用其他编程语言中编写Lucene版本。如果这些版本要与Apache Lucene保持兼容,则需要一个与语言无关的Lucene索引格式定义。因此,本文档试图提供Apache Lucene文件格式的完整且独立的定义。

随着Lucene的发展,这份文件应该不断发展。Lucene在不同编程语言中的版本应努力就文件格式达成一致,并生成本文档的新版本。

定义

Lucene的基本概念是索引,文档(document),字段(field)和词(term)

索引包含一系列文档

两个不同字段中的相同字节序列被认为是不同的词。因此,词表示为一对:命名字段的字符串和字段中的字节。

倒排索引

该索引存储有关词的统计信息,以使基于词的搜索更有效。Lucene的索引属于被称为倒排索引的索引家族。这是因为它可以列出包含它的文档,这是自然关系的反转,其中文档列出词。

字段类型

在Lucene中,字段可以被存储,在这种情况下,它们的文本以字面方式以非反转的方式存储在索引中。被反转的字段称为索引,一个字段既可以存储也可以被索引。

字段的文本可以被tokenized为要索引的词,或者字段的文本可以逐字地用作要索引的词。大多数字段都是标记化的,但有时某些标识符字段的字面索引很有用。

有关 Fields的更多信息,请参阅Field java文档。

Segments


Lucene索引可以由多个子索引或段组成。每个段都是完全独立的索引,可以单独搜索。索引演变为:
为新添加的文档创建新段
合并现有段

搜索可能涉及多个段和/或多个索引,每个索引可能由一组段组成。

文件编号

在内部,Lucene通过整数——文档编号引用文档。添加到索引的第一个文档编号为零,并且添加的每个后续文档都比前一个更大。

请注意,文档的编号可能会更改,因此在将这些编号存储在Lucene之外时应小心。特别是,在以下情况下,数字可能会发生变化:

索引结构概述

每个段索引都保持以下内容:

文件名

属于一个段的所有文件具有相同的名称和不同的扩展名。扩展名对应于下面描述的不同文件格式。使用复合文件格式(默认为1.4及更高版本)时,这些文件(段信息文件,锁文件和已删除文档文件除外)将折叠为单个.cfs文件(有关详细信息,请参阅下文)

通常,索引中的所有段都存储在单个目录中,但这不是必需的

从版本2.1(无锁提交)开始,文件名永远不会被重用(有一个例外,“segments.gen”,见下文)。也就是说,当任何文件保存到目录时,它将被赋予一个前所未有的文件名。这是使用简单的世代方法实现的。例如,第一段文件是segments_1,然后是segments_2等。生成是以字母数字(基础36)形式表示的顺序长整数。

文件扩展名摘要

下表总结了Lucene中文件的名称和扩展名:

名称 扩展名 简要描述 源码文件
Segments File segments.gen, segments_N 存储有关提交点的信息 SegmentInfos
Lock File write.lock 写锁定可防止多个IndexWriters写入同一文件.
Segment Info .si 存储有关段的元数据 Lucene40SegmentInfoFormat
Compound File .cfs, .cfe 一个可选的“虚拟”文件,由经常用完文件句柄的系统的所有其他索引文件组成. CompoundFileDirectory
Fields .fnm 存储有关字段的信息 Lucene40FieldInfosFormat
Field Index .fdx 包含指向字段数据的指针 Lucene40StoredFieldsFormat
Field Data .fdt 存储的文档字段 Lucene40StoredFieldsFormat
Term Dictionary .tim 词字典,存储词信息 Lucene40PostingsFormat
Term Index .tip 词字典的索引 Lucene40PostingsFormat
Frequencies .frq 包含每个词和频率的文档列表 Lucene40PostingsFormat
Positions .prx 存储词在索引中出现的位置信息 Lucene40PostingsFormat
Norms .nrm.cfs, .nrm.cfe 文档和字段的编码长度和提升因子 Lucene40NormsFormat
Per-Document Values .dv.cfs, .dv.cfe 编码其他评分因子或其他每个文档信息 Lucene40DocValuesFormat
Term Vector Index .tvx 存储文档数据文件中的偏移 Lucene40TermVectorsFormat
Term Vector Documents .tvd 每个文档包含的词向量的信息 Lucene40TermVectorsFormat
Term Vector Fields .tvf 关于术语向量的字段级信息 Lucene40TermVectorsFormat
Deleted Documents .del 删除的文件信息 Lucene40LiveDocsFormat

Lock File

写锁默认存储在索引目录中,名为“write.lock”。如果锁目录与索引目录不同,则写入锁将命名为“XXXX-write.lock”,其中XXXX是从索引目录的完整路径派生的唯一前缀。当此文件存在时,writer当前正在修改索引(添加或删除文档)。此锁定文件确保一次只有一个writer正在修改索引。

上一篇 下一篇

猜你喜欢

热点阅读