Lucene 索引文件的生成(二十三)之fdxfdtfdm

news/2025/3/30 4:40:27/

从本篇文章开始介绍用于描述存储域(存储域的概念见文章索引文件之fdx&&fdt&&fdm)的索引文件.fdx、.fdt、.fdm的生成过程,直接给出流程图:

图1:

  从图1中可以看出,生成完整的索引文件.fdx、.fdt、.fdm的过程分布在两个阶段:索引阶段、flush阶段。这也解释了为什么在文章文档提交之flush(三)的图5中,其他索引文件都是"生成"、而索引文件.fdx、.fdt、.fdm则是"更新",注意的是那篇文章中是基于Lucene 7.5.0,故不存在索引文件.fdm。

索引阶段

处理存储域的域值信息

图2:

  图2中Document指定是索引阶段的一篇待处理的文档,我们集合一个例子来加以介绍:

图3:

  当开始处理一篇文档(Document)时,我们需要记录对存储域的域值,图1的例子中有两篇文档,在执行了流程点处理存储域的域值之后,域值信息将被写入到一个字节数组bufferedDocs[ ]数组(在源码中bufferedDocs其实是一个对象,它用来将数据写入到字节数组buffer[ ]中,为了便于介绍,所以我们直接认为bufferedDocs是一个字节数组)中,域值信息中包含两类信息:

  • FieldNumAndType:该信息是域的编号域值的值类型的long类型的组合值,组合公式为:域的编号域值的值类型,也就是说long类型的FieldNumAndType,低3位用来存储域值的值类型,高61位用来存储域的编号

    • 域的编号是一个从开0开始的递增值,每种域名有唯一的一个编号,根据域名来获得一个域的编号,例如图3中域名”content“是第一个被处理的域名,所以该域的编号为0,同理域名”attachment“、"author"的编号分别为1、2。

    • 域值的值类型共有以下几种,例如图3中第54行的域值的值类型是STRING类型,第56行的域值的值类型是NUMERIC_INT类型

      • STRING:固定值:0x00,域值为String类型
      • BYTE_ARR:固定值:0x01,域值为字节类型
      • NUMERIC_INT:固定值:0x02,域值为int类型
      • NUMERIC_FLOAT:固定值:0x03,域值为float类型
      • NUMERIC_LONG:固定值:0x04,域值为longt类型
      • NUMERIC_DOUBLE:固定值:0x05,域值为double类型
    • 以图3中第56行的域为例,域名"author"的域的编号为2,域值"3"的值类型为NUMERIC_INT,那么组合后

  • Value:该信息包含了域值被编码成字节后的值以及占用的字节数量length

  对于图3的例子,这两篇文档中存储域的域值写入到bufferedDoc[ ]数组后,如下所示:

图4:

  图3中文档0有四个域信息,但是域名"attachment"的域的属性为"STORE.NO",那么域值就不会别写入到bufferedDoc[ ]数组中,这会导致在搜索阶段,当文档0满足某个查询条件后,我们无法获得文档0中域名"attachment"的域值。

  bufferedDoc[ ]数组中的内容将被写入到索引文件.fdt中:

图5:

  图5中,每个Doc字段就描述了一篇文档的所有域存储域的域值信息。

看这里:https://www.amazingkoala.com.cn/Lucene/Index/2020/1015/170.html


http://www.ppmy.cn/news/478340.html

相关文章

Lucene 索引文件的读取(十五)之fdxfdtfdm

本文承接文章索引文件的读取(十四)之fdx&&fdt&&fdm,继续介绍剩余的内容。为了更好的理解下文中的内容,建议先阅读文章DirectMonotonicWriter&&Reader。下面先给出读取索引文件fdx&&fdt&&…

FDM3D打印机结构类型总结

在科技的急速发展下,3D打印技术已经步入了我们的生活,在医疗、建筑设计、科研、制造业、文物保护、配饰配件、食品等领域有着深远的影响。 本文主要是为了给更多兴趣爱好者深入了解FDM 3D打印机,而对它的结构类型作出的总结,就目前…

IDM\FDM下载器使用指南

IDM\FDM下载器使用指南 IDM使用IDM获取IDM浏览器扩展程序相关问题 油猴油猴获取(枪)油猴脚本获取(子弹) FDMFDM获取浏览器扩展 IDM使用 优点:下载速度快,可以自定义接管下载文件类型 缺点:收费…

OFDM技术与FDM技术区别

作者:NicDino 链接:https://www.zhihu.com/question/20606092/answer/15809411 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 1) 首先,OFDM的意思是Orthogonal Frequency Divis…

FDM打印机使用总结(二)

(11)挤出机齿轮对挤出丝影响 在其他参数一致情况下,齿轮齿数越多,挤出丝流量越大,挤出丝直径越大 (12)问题:若打印材料打印温度比较低,比如PCL,低于打印机防…

18-1降维与特征选择——偏最小二乘方法(附matlab程序)

1.简述 降维: 比如现在有100维的变量来表征一个东西,我们觉得太冗余复杂了,想降低到10维。但是我们没有确定的筛选依据,直接使用数学工具来实现降维,就好像丢进了一个黑箱,经过抽象、提炼,得到了…

FDM打印机使用总结(一)

由于课题组需要,最近开始接触FDM打印机,在这里总结其使用过程中的问题和经验,和大家交流,若有不妥或更优之处,请大家多多指教! 设备:自研平台,0.2mm喷嘴,Cura切片软件 &a…

Lucene 索引文件的读取(十四)之fdxfdtfdm

在前几篇索引文件的读取的系列文章中,我们介绍索引文件tim&&tip的读取时机点时说到,在生成StandardDirectoryReader对象期间,会生成SegmentReader对象,该对象中的StoredFieldsReader信息描述了索引文件fdx&&fdt&a…