Lucene 索引文件之kdd&kdi&kdm

本文详细介绍了Lucene 8.6.0版本后,点数据索引文件kdd、kdi、kdm的结构和变化,包括它们各自存储的内容,如kdd存储叶子节点数据,kdi存储内部节点数据,kdm存储元数据。同时,文章提到了优化目的,如利用MmapDirectory的preload功能提升读取性能,以及off-heap机制的使用情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从Lucene8.6.0开始,用于存储点数据(point value)的索引文件由原先的两个索引文件dim&&dii,改为三个索引文件kdd&kdi&kdm。由于生成kdd&kdi&kdm的过程基本上没有太大的变动,并且索引文件的数据结构中的字段也变化不大。故本文不会再详细介绍每一个字段的含义,即阅读本章前,最好先看下文章索引文件dim&&dii的数据结构,以及索引文件dim&&dii的生成过程以及索引文件dim&&dii的读取过程的系列文章,使得能理解优化的目的。当然在下文中,会结合一些issues来简单的叙述下优化的目的。

  再次强调下,先阅读索引文件dim&&dii的生成过程以及索引文件dim&&dii的读取过程的系列文章,因为开始下笔写这篇文章的时候,我几乎忘光了之前写的这些东东,也就是相当于一片空白的重新复习了下这些系列文章, 发现看完后很容易的理解了(看来我的写作表达能力还阔以),哈哈😁。

索引文件的数据结构

  我们先直接分别给出单个点数据域、多个点数据域的数据结构:

单个点数据域的数据结构

图1:

多个点数据域的数据结构

图2:

  源码中对于这三个索引文件的简单描述:

图3:

  图3中红框标注.kdm应该是.kdd文件,可惜的是直到目前最新版本的Lucene 8.6.3,这里的书写错误依旧未被修正。

  • 索引文件.kdm(meta)中存储的是元数据,即描述点数据域的数据的信息,例如点数据的维度、每个维度占用的字
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值