最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2023年03月14日 11:17:17   作者:滄叔解碼  
這篇文章主要為大家介紹了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)全局示意圖

字段描述

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

可能的值有:

PointDimensionCount

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

PointNumBytes

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

VectorDimension

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

VectorSimilarityFunction

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

  • EUCLIDEAN:歐式距離
  • DOT_PRODUCT:點積
  • COSINE:consine距離

Footer

文件尾,主要包括

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

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

相關(guān)文章

  • MybatisPlus開啟二級緩存的方法詳解

    MybatisPlus開啟二級緩存的方法詳解

    這篇文章主要介紹了MybatisPlus開啟二級緩存的方法詳解,二級緩存是基于mapper文件的namespace級別,也就是說多個sqlSession可以共享一個mapper中的二級緩存區(qū)域,需要的朋友可以參考下
    2023-11-11
  • 優(yōu)化Java內(nèi)存管理來防止“GC”錯誤的方法詳解

    優(yōu)化Java內(nèi)存管理來防止“GC”錯誤的方法詳解

    垃圾回收(GC)是 Java 中的一個重要機制,它可以管理內(nèi)存并回收不再使用的對象所占用的資源,在本文中,我們將探討一些技巧,幫助您避免這一錯誤,確保您的 Java 應(yīng)用程序順利運行,需要的朋友可以參考下
    2023-11-11
  • SpringBoot通過yml和xml文件配置日志輸出方法

    SpringBoot通過yml和xml文件配置日志輸出方法

    這篇文章主要介紹了SpringBoot通過yml和xml文件配置日志輸出方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-04-04
  • springboot獲取profile的操作

    springboot獲取profile的操作

    這篇文章主要介紹了springboot獲取profile的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 如何使用RequestHeaders添加自定義參數(shù)

    如何使用RequestHeaders添加自定義參數(shù)

    這篇文章主要介紹了使用RequestHeaders添加自定義參數(shù)方式,具有很好的參考價值,希望對大家有所幫助。
    2022-02-02
  • Java實現(xiàn)從Html文本中提取純文本的方法

    Java實現(xiàn)從Html文本中提取純文本的方法

    今天小編就為大家分享一篇Java實現(xiàn)從Html文本中提取純文本的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Java實現(xiàn)雙保險線程的示例代碼

    Java實現(xiàn)雙保險線程的示例代碼

    這篇文章主要介紹了Java實現(xiàn)雙保險線程的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 淺談JVM內(nèi)存溢出的幾種方式與解決方法

    淺談JVM內(nèi)存溢出的幾種方式與解決方法

    內(nèi)存溢出分為兩大類:OutOfMemoryError和StackOverflowError,以下舉出10個內(nèi)存溢出的情況,并通過實例代碼的方式講解了是如何出現(xiàn)內(nèi)存溢出的,感興趣的可以了解一下
    2024-01-01
  • SpringBoot+Druid開啟監(jiān)控頁面的實現(xiàn)示例

    SpringBoot+Druid開啟監(jiān)控頁面的實現(xiàn)示例

    本文主要介紹了SpringBoot+Druid開啟監(jiān)控頁面的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • 冒泡排序的原理及java代碼實現(xiàn)

    冒泡排序的原理及java代碼實現(xiàn)

    冒泡排序法:關(guān)鍵字較小的記錄好比氣泡逐趟上浮,關(guān)鍵字較大的記錄好比石塊下沉,每趟有一塊最大的石塊沉底。算法本質(zhì):(最大值是關(guān)鍵點,肯定放到最后了,如此循環(huán))每次都從第一位向后滾動比較,使最大值沉底,最小值上升一次,最后一位向前推進
    2016-02-02

最新評論

民乐县| 会理县| 聂拉木县| 丹棱县| 东丽区| 竹山县| 平邑县| 昌宁县| 麻阳| 扎鲁特旗| 宕昌县| 广安市| 呼伦贝尔市| 炎陵县| 利川市| 金溪县| 泊头市| 镇宁| 罗江县| 涪陵区| 高雄县| 陆河县| 井陉县| 铅山县| 五指山市| 保德县| 法库县| 民乐县| 视频| 巴马| 光泽县| 大余县| 青阳县| 永川市| 巩留县| 周口市| 乐平市| 徐水县| 西乌珠穆沁旗| 兴海县| 枣庄市|