Lucene fnm索引文件格式是什么

免费教程   2024年05月10日 13:00  

这篇文章主要介绍“Lucenefnm索引文件格式是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Lucenefnm索引文件格式是什么”文章能帮助大家解决问题。

简介

后缀为fnm文件是存储索引的字段的元信息,包含字段名称,字段类型,字段属性等信息。

版本

9.1.0

涉及的主要类

fnm索引文件的生成源码比较简单,不贴了,主要逻辑在:

org.apache.lucene.codecs.lucene90.Lucene90FieldInfosFormat

代码示例FieldTypefieldType=newFieldType();fieldType.setStored(true);fieldType.setStoreTermVectors(true);fieldType.setStoreTermVectorOffsets(true);fieldType.setStoreTermVectorPositions(true);fieldType.setStoreTermVectorPayloads(true);fieldType.setTokenized(true);fieldType.setOmitNorms(true);fieldType.setIndexOptions(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS);Documentdoc=newDocument();doc.add(newField("name","maria",fieldType));doc.add(newSortedDocValuesField("name",newBytesRef("maria")));doc.add(newIntPoint("id",1,2,3));doc.add(newKnnVectorField("vector",newfloat[]{1.1f,2.2f,3.3f},VectorSimilarityFunction.COSINE));文件结构全局示意图字段描述Header

文件头部信息,主要是包括:

文件头魔数(同一lucene版本所有文件相同)

该文件使用的codec名称:Lucene90FieldInfos(codec可以理解成文件的布局格式,不同版本lucene相同后缀文件有不一样的版本格式)

codec版本

segment后缀名(一般为空)

segment id(也是Segment_N文件中的N)

FieldCount

该索引的field总数

Field

记录字段的元信息

FieldName

字段名称,比如示例代码中的name,id,vector都是字段名称

FieldNumber

字段的编号

FieldBits

部分属性的位图信息,是一个组合值,描述字段是否具有以下属性:

是否存储词向量(termVector):0x1

是否要忽略norm值:0x2

是否带有payload:0x4

该字段是否是软删除字段(soft delete):0x8

示例代码中的name字段的FieldBits的值为:0x1 | 0x2 | 0x4 = 0x7

IndexOptions

字段的索引选项,表示在索引该字段的时候存储的倒排信息有哪些,所有的类型:

0:NONE

1:DOCS

2:DOCS_AND_FREQS

3:DOCS_AND_FREQS_AND_POSITIONS

4:DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS

DocValuesBits

官方文档描述的是由norm和docValue类型的组合值,但是从源码看只存储了docValue类型。

0:NONE

1:NUMERIC

2:BINARY

3:SORTED

4:SORTED_SET

5:SORTED_NUMERIC

DocValuesGen

可以理解为字段DocValues的版本号,通过IndexWriter.updateDocValues(...)会更新该版本号

Attributes

可能的值有:

PointDimensionCount

如果字段是IntPoint,LongPoint等类型,则记录维数。

PointNumBytes

如果字段是IntPoint,LongPoint等类型,则记录每一维数据存储需要的字节个数。

VectorDimension

向量字段记录向量的维数

VectorSimilarityFunction

向量相似度衡量函数:

EUCLIDEAN:欧式距离

DOT_PRODUCT:点积

COSINE:consine距离

Footer

文件尾,主要包括

文件尾魔数(同一个lucene版本所有文件一样)

0

校验码

关于“Lucenefnm索引文件格式是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

域名注册
购买VPS主机

您或许对下面这些文章有兴趣:                    本月吐槽辛苦排行榜

看贴要回贴有N种理由!看帖不回贴的后果你懂得的!


评论内容 (*必填):
(Ctrl + Enter提交)   

部落快速搜索栏

各类专题梳理

网站导航栏

X
返回顶部