欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Lucene fnm索引文件格式源碼解析

 更新時(shí)間:2023年03月14日 11:17:17   作者:滄叔解碼  
這篇文章主要為大家介紹了Lucene fnm索引文件格式源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

簡(jiǎn)介

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

版本

lucene 9.1.0

涉及的主要類

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

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)全局示意圖

字段描述

Header

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

  • 文件頭魔數(shù)(同一lucene版本所有文件相同)
  • 該文件使用的codec名稱:Lucene90FieldInfos(codec可以理解成文件的布局格式,不同版本lucene相同后綴文件有不一樣的版本格式)
  • codec版本
  • segment后綴名(一般為空)
  • segment id(也是Segment_N文件中的N)

FieldCount

該索引的field總數(shù)

Field

記錄字段的元信息

FieldName 

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

FieldNumber 

字段的編號(hào)

FieldBits

部分屬性的位圖信息,是一個(gè)組合值,描述字段是否具有以下屬性:

  • 是否存儲(chǔ)詞向量(termVector):0x1
  • 是否要忽略norm值:0x2
  • 是否帶有payload:0x4
  • 該字段是否是軟刪除字段(soft delete):0x8

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

IndexOptions

字段的索引選項(xiàng),表示在索引該字段的時(shí)候存儲(chǔ)的倒排信息有哪些,所有的類型:

  • 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類型的組合值,但是從源碼看只存儲(chǔ)了docValue類型。

  • 0:NONE
  • 1:NUMERIC
  • 2:BINARY
  • 3:SORTED
  • 4:SORTED_SET
  • 5:SORTED_NUMERIC

DocValuesGen

可以理解為字段DocValues的版本號(hào),通過IndexWriter.updateDocValues(...)會(huì)更新該版本號(hào)

Attributes

可能的值有:

PointDimensionCount

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

PointNumBytes

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

VectorDimension

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

VectorSimilarityFunction

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

  • EUCLIDEAN:歐式距離
  • DOT_PRODUCT:點(diǎn)積
  • COSINE:consine距離

Footer

文件尾,主要包括

  • 文件尾魔數(shù)(同一個(gè)lucene版本所有文件一樣)
  • 0
  • 校驗(yàn)碼

以上就是Lucene fnm索引文件格式源碼解析的詳細(xì)內(nèi)容,更多關(guān)于Lucene fnm索引文件格式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java設(shè)計(jì)模式之外觀模式解析

    Java設(shè)計(jì)模式之外觀模式解析

    這篇文章主要介紹了Java設(shè)計(jì)模式之外觀模式解析,外觀模式提供了一個(gè)統(tǒng)一的接口,用來訪問子系統(tǒng)中的一群接口,外觀定義了一個(gè)高層接口,讓子系統(tǒng)更容易使用,需要的朋友可以參考下
    2024-01-01
  • Java實(shí)現(xiàn)簡(jiǎn)單班級(jí)管理系統(tǒng)

    Java實(shí)現(xiàn)簡(jiǎn)單班級(jí)管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單班級(jí)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 基于多線程中join()的用法實(shí)例講解

    基于多線程中join()的用法實(shí)例講解

    下面小編就為大家?guī)硪黄诙嗑€程中join()的用法實(shí)例講解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • Java中Finally關(guān)鍵字

    Java中Finally關(guān)鍵字

    與其他語言的模型相比,finally 關(guān)鍵字是對(duì) Java 異常處理模型的最佳補(bǔ)充。接下來通過本文給大家介紹Java中Finally關(guān)鍵字及finally關(guān)鍵字的使用相關(guān)知識(shí),感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05
  • 詳解Java的Hibernat框架中的Map映射與SortedMap映射

    詳解Java的Hibernat框架中的Map映射與SortedMap映射

    這篇文章主要介紹了Java的Hibernat框架中的Map映射與SortedMap映射,Hibernat是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2015-12-12
  • Java實(shí)現(xiàn)4種微信搶紅包算法(小結(jié))

    Java實(shí)現(xiàn)4種微信搶紅包算法(小結(jié))

    微信紅包是大家經(jīng)常使用的,到現(xiàn)在為止仍然有很多紅包開發(fā)的需求,實(shí)現(xiàn)搶紅包算法也是面試常考題,本文就詳細(xì)的來介紹一下如何實(shí)現(xiàn),感興趣的可以了解一下
    2021-12-12
  • springboot配置開發(fā)和測(cè)試環(huán)境并添加啟動(dòng)路徑方式

    springboot配置開發(fā)和測(cè)試環(huán)境并添加啟動(dòng)路徑方式

    這篇文章主要介紹了springboot配置開發(fā)和測(cè)試環(huán)境并添加啟動(dòng)路徑方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java實(shí)現(xiàn)二叉樹的基本操作詳解

    Java實(shí)現(xiàn)二叉樹的基本操作詳解

    這篇文章主要為大家詳細(xì)介紹了Java數(shù)據(jù)結(jié)構(gòu)與算法中二叉樹的基本操作,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下
    2022-10-10
  • 如何實(shí)現(xiàn)java遞歸 處理權(quán)限管理菜單樹或分類

    如何實(shí)現(xiàn)java遞歸 處理權(quán)限管理菜單樹或分類

    這篇文章主要介紹了如何實(shí)現(xiàn)java遞歸 處理權(quán)限管理菜單樹或分類,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • 關(guān)于weblogic部署Java項(xiàng)目的包沖突問題的解決

    關(guān)于weblogic部署Java項(xiàng)目的包沖突問題的解決

    這篇文章主要介紹了關(guān)于weblogic部署Java項(xiàng)目的包沖突問題的解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01

最新評(píng)論