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

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),通過(guò)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)文章

  • MybatisPlus開(kāi)啟二級(jí)緩存的方法詳解

    MybatisPlus開(kāi)啟二級(jí)緩存的方法詳解

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

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

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

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

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

    springboot獲取profile的操作

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

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

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

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

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

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

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

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

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

    SpringBoot+Druid開(kāi)啟監(jiān)控頁(yè)面的實(shí)現(xiàn)示例

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

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

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

最新評(píng)論

阿拉善盟| 鸡东县| 曲阳县| 敦化市| 托克逊县| 和田市| 宜良县| 河间市| 巴林右旗| 松潘县| 绥中县| 垫江县| 垣曲县| 刚察县| 黄骅市| 图木舒克市| 山西省| 扬中市| 广饶县| 平顶山市| 嵩明县| 扬州市| 武定县| 杂多县| 吐鲁番市| 东宁县| 海阳市| 庐江县| 贞丰县| 湟源县| 合作市| 泗阳县| 潞城市| 手游| 铜川市| 新田县| 阿拉善盟| 柯坪县| 北海市| 镶黄旗| 民和|