Lucene 6.0 索引结构

简介: 1.复合文件索引 该模式是默认的。 1.1 目录结构 图 1-1 复合文件索引 1.2 _x.cfe 1.3 _x.cfs 1.4 _x.si 2.多文件索引 IndexWriterConfig org.apache.lucene.index.IndexWriterConfig.setUseCompoundFile(boolean useCompoundFile

1.复合文件索引

该模式是默认的。

1.1 目录结构


图 1-1 复合文件索引

1.2 _x.cfe

1.3 _x.cfs

1.4 _x.si


2.多文件索引

IndexWriterConfig org.apache.lucene.index.IndexWriterConfig.setUseCompoundFile(boolean useCompoundFile)
调用此函数可以设为多文件索引模式。

2.1 目录结构


图2-1 多文件索引

2.2 _x.fdt

通常在搜索打分完毕后,IndexSearcher会返回一个docID序列,但是仅仅有docID我们是无法看到存储在索引中的document,这时候就需要通过docID来得到完整Document信息,这个过程就需要对fdx/fdt文件进行读操作。
fdx/fdt文件就是Lucene的正向文件。有一个比喻:如果fdt是一本书的正文,那么fdx则是书的目录。显然fdt文件大于fdx。
通过docID读取到document需要完成Segment、Block、Chunk、document四级查询。Segment、Block、Chunk的查找都是二分查找,速度很快,但是Chunk中定位document则是顺序查找,所以Chunk的大小直接影响着读取的性能。

fdt文件的基本单位是Chunk

当你在程序中存储某个域时(使用Field.Store.YES选项),该域会被写入两个文件:.fdx与.fdt。

2.3 _x.fdx

fdx的基本单位是Block。一个Block由三个部分组成,见图2-2,.fdx文件结构。最顶层的ChunkIndex跟倒数第三层的BlockCunks不是一个东西。

· BlockChunks表示当前Block中Chunk的个数;

· <DocBases>表示当前Block中每个Chunk的doc个数,可以看作一个数组;

· <StartPointers>表示当前Block中每个Chunk在fdt文件中的起始位置,其结构与<DocBases>相同。


图2-2 .fdx文件结构


2.4 _x.fnm

.fnm文件存储了段中相关文档的所有field信息。包括“该域是否被索引?该域是否允许使用项向量?”等。
此文件中的field不一定按字母顺序排列,每个field都有一个fieldNo编号,它会在其他索引文件中被用到,用来节省空间。

2.5 _x.nvd


2.6 _x.nvm


2.7 _x.si

3.共同的文件

3.1segments_x

x为IndexWriter的写入次数,从1开始计数。

目录
相关文章
|
3月前
|
存储 关系型数据库 MySQL
MySQL数据库——索引(2)-B+Tree、Hash结构,索引分类(聚集索引、二级索引)
MySQL数据库——索引(2)-B+Tree、Hash结构,索引分类(聚集索引、二级索引)
47 1
|
3月前
|
存储 自然语言处理 NoSQL
深入解析Elasticsearch的内部数据结构和机制:行存储、列存储与倒排索引之倒排索引(三)
深入解析Elasticsearch的内部数据结构和机制:行存储、列存储与倒排索引之倒排索引(三)
|
4月前
|
存储 自然语言处理 监控
ES倒排索引?正排索引?存储结构?怎么用的?快在哪?
ES倒排索引?正排索引?存储结构?怎么用的?快在哪?
|
11月前
|
存储 自然语言处理 索引
05Lucene索引库的添加
05Lucene索引库的添加
32 0
|
11月前
|
索引
06Lucene索引库的删除
06Lucene索引库的删除
34 0
|
11月前
|
SQL 数据库 索引
08Lucene索引库查询 - 介绍
08Lucene索引库查询 - 介绍
42 0
|
11月前
|
索引
07Lucene索引库的修改
07Lucene索引库的修改
31 0
|
存储 关系型数据库 MySQL
索引结构与检索原理|学习笔记
快速学习索引结构与检索原理
索引结构与检索原理|学习笔记
|
存储 自然语言处理 数据库
Lucene 查询原理
# 前言 Lucene 是一个基于 Java 的全文信息检索工具包,目前主流的搜索系统Elasticsearch和solr都是基于lucene的索引和搜索能力进行。想要理解搜索系统的实现原理,就需要深入lucene这一层,看看lucene是如何存储需要检索的数据,以及如何完成高效的数据检索。
8584 1
|
自然语言处理 算法 索引
lucene 范围查询及其原理
适用于lucene 6.0。 Int类型的有IntPoint,Double类型的有相应的DoublePoint,以此类推。 1.相关类 org.apache.lucene.document.IntPoint 一个被索引的int类型的field。可以代表n维形状,可以范围搜索。 org.apache.lucene.document.IntPoint.IntPoint(String
2880 0