呼延十

还记得年少时的梦吗

Lucene系列(八)索引格式之fnm文件

本文使用Lucene代码版本: 8.7.0 前言 本文学习一下.fnm文件的格式与内容。 fnm文件主要存储域的基础信息,前面我们知道了,在fdt,fdm,fdx三个文件中,配合存储了域的值信息,其中在fdt文件中,存储域的值信息时,为了将每个值与域名能对应起来,存储了FieldNumberAndType.  详情可查看 [lucene索引文件之fdt文件]http://huyan.c...

Lucene系列(七)索引格式之fdx文件

前言 这篇文章介绍。fdx 文件格式。 .fdx 文件整体格式 看起来比较简单,实际写入代码是 fdt,fdm,fdx 三个文件中最复杂的。 其中内容包括: IndexHeader. 索引文件头,前面说过,就不细说了。 Footer: 索引文件脚,不细说。 ChunkDocsNum: 一个数组,含义是:每个 Chunk 中的 doc 数量。 ChunkStart...

Lucene系列(六)索引格式之fdt文件

前言 本文介绍一下。fdt 文件的存储格式。 fdt 文件,以正排的方式,存储了 field 的原始真实数据。也就是说,你添加到所有中的所有 field 内容。都会存储在此文件中。 .fdt 文件整体结构 其中Header **和 Footer**, 与其中文件并无差别。详细字段解释可以看 Lucene 系列(二)索引格式之 fdm 文件 这里主要看一下以 chunk 为单位进...

Lucene系列(五)索引格式之fdm文件

本文使用 Lucene 代码版本:8.7.0 前言 首先学习一下 lucene 的索引文件结构。本文介绍 Field 相关信息的存储文件格式。 当你在写入 field 信息时,如果像下面这样,指定了 Stored. 也就是希望 lucene 能够保存你的原始 Field 信息,那么就会生成三个文件 .fdt .fdm .fdx. 其中 .fdt 文件保存了原始的 field...

Lucene系列(四)directmonotonicwriter源码分析

前言 来学习一下DirectMonotonicWriter类的代码. 源码版本: 8.7.0 介绍 先上一下源码注释: Write monotonically-increasing sequences of integers. This writer splits data into blocks and then for each block, computes the av...

Lucene系列(三)directwriter源码分析

前言 本文学习下 Lucene 在存储大量整数时使用到的编码方法。 介绍 DirectWriter 用 bit 编码方式进行数组压缩的功能,它在整个数组的所有元素都不大的情况下能带来不错的压缩效果。 DirectWriter 是 Lucene 为整型数组重编码成字节数组的工具,它的底层包含一系列编码器,将整型数组的所有元素按固定位长度的位存储。它按 Bit 存储,预留长度过长会浪费空...

Lucene系列(二)int的变长存储与zigzag编码

前言 lucene 代码量还是比较多的,在没有看的很明白的情况下,先写一写新学到的工具类的一些操作吧~也是收获很多。 在 lucene 写入索引文件时,为了节省空间,经常会对数据进行一些压缩,这篇文章介绍一种对 int, long 类型有用的压缩方式。即变长存储。 它在 lucene 中的应用十分广泛,有事没事就用一下,因此为了熟练的理解代码,我们还是来一探究竟吧~ 在 lucene...

Lucene系列(一)什么是 Lucene

前言 上一个系列还没有完结,我又来开新坑啦~ 接触搜索/推荐相关工作,也有两年了。工作里对lucene的接触不少,却也不精。最近工作里没有那么忙,因此想通过学习源码的方式,来对lucene进行一个系统的学习。 此外,听闻lucene源码堪称面对对象设计届的典范,也想从中吸收一些代码设计/开发方面的知识。最近老是感觉自己写的代码有问题,想尝试优化却感觉非常吃力,经常一顿操作下来提升的很有...