溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Lucene?fnm索引文件格式是什么

發(fā)布時間:2023-03-14 14:18:00 來源:億速云 閱讀:116 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹“Lucene fnm索引文件格式是什么”的相關(guān)知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Lucene fnm索引文件格式是什么”文章能幫助大家解決問題。

簡介

后綴為fnm文件是存儲索引的字段的元信息,包含字段名稱,字段類型,字段屬性等信息。

版本

lucene 9.1.0

涉及的主要類

fnm索引文件的生成源碼比較簡單,不貼了,主要邏輯在:

org.apache.lucene.codecs.lucene90.Lucene90FieldInfosFormat

代碼示例

FieldType fieldType = new FieldType();
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);
Document doc = new Document();
doc.add(new Field("name", "maria", fieldType));
doc.add(new SortedDocValuesField("name", new BytesRef("maria")));
doc.add(new IntPoint("id", 1, 2, 3));
doc.add(new KnnVectorField("vector", new float[]{1.1f, 2.2f, 3.3f}, VectorSimilarityFunction.COSINE));

文件結(jié)構(gòu)全局示意圖

Lucene?fnm索引文件格式是什么

字段描述

Header

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

  • 文件頭魔數(shù)(同一lucene版本所有文件相同)

  • 該文件使用的codec名稱:Lucene90FieldInfos(codec可以理解成文件的布局格式,不同版本lucene相同后綴文件有不一樣的版本格式)

  • codec版本

  • segment后綴名(一般為空)

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

FieldCount

該索引的field總數(shù)

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

可能的值有:

Lucene?fnm索引文件格式是什么

PointDimensionCount

如果字段是IntPoint,LongPoint等類型,則記錄維數(shù)。

PointNumBytes

如果字段是IntPoint,LongPoint等類型,則記錄每一維數(shù)據(jù)存儲需要的字節(jié)個數(shù)。

VectorDimension

向量字段記錄向量的維數(shù)

VectorSimilarityFunction

向量相似度衡量函數(shù):

  • EUCLIDEAN:歐式距離

  • DOT_PRODUCT:點積

  • COSINE:consine距離

Footer

文件尾,主要包括

  • 文件尾魔數(shù)(同一個lucene版本所有文件一樣)

  • 0

  • 校驗碼

關(guān)于“Lucene fnm索引文件格式是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI