上篇,散仙在修真篇之九里面,介紹了Lucene裏面全部的文件格式以及的做用,那麼接下來的一系列文章裏,將逐個細說,今天咱們先來看下lucene索引文件格式裏面的老大段文件,以.gen ,.si爲後綴名的文件。工具
.si是記錄段文件的元數據的信息,主要有以下的幾個屬性 編碼
1,SegVersion段的版本號,是段文件建立時的編碼版本。 spa
2,SegSize是指包含在這個段文件裏文檔數(Document)的總數 操作系統
3,IsCompoundFile記錄着這個段在寫入時,是否被做爲一個複合索引文件, code
若是是-1的話,則爲正常的段索引文件,爲1的話就是複合索引文件 orm
4,Checksum,檢驗和,包含全部段文件中的全部字節的CRC32 checksum, 索引
一般用於驗證索引文件的完整性。 文檔
5,Diagnostics,診斷映射,它會私下被IndexWriter寫入記錄,做爲一個Debug時的一個輔助工具,每一個段文件都有一個對應的診斷映射,它包含一些元數據,包括一些lucene當前的版本號,操做系統,Java版本,以及它是怎麼被建立的,是合併(merge),仍是被刷新(flush),仍是被多個索引合併(addindex) it
6,Attributes,codec-private屬性的鍵-值映射。 io
7,對於這個段來講,它被組成由多個文件
SegmentInfos這個類,幾乎涵蓋了段文件裏全部的詳細信息,提供了大量的方法用於在文件系統上操做段文件,segments_N每每是最活躍的文件,由於最新的段文件,經常面臨着頻繁的添加操做,這個文件包含了每一個段的名字和細節編解碼器和一些刪除的元數據信息。
另一個文件segments.gen,這個文件包含了以_N開頭的在當前的段文件的記錄,
這個文件僅僅做爲一個備份,以防Directy不能準確的定位所寫入的當前段文件是那一些以_N開頭的,一般僅包含一個int32位的header信息。
文件:
segments.gen: GenHeader, Generation, Generation
segments_N: Header, Version, NameCounter, SegCount, <SegName, SegCodec, DelGen, DeletionCount, FieldInfosGen, UpdatesFiles>SegCount, CommitUserData, Checksum
數據類型:
Header---->CodecHeader
GenHeader, NameCounter, SegCount, DeletionCount --> Int32
Generation, Version, DelGen, Checksum, FieldInfosGen --> Int64
SegName, SegCodec --> String
CommitUserData --> Map<String,String>
UpdatesFiles --> Set<String>
介紹:
Version數量,記錄着這個索引全部被添加或刪除文檔的個數。
NameCounter ,一般用於生成新的段文件名稱
SegName ,段名稱,一般被用於全部組成段文件的前綴名稱
DelGen ,記錄着全部段刪除文件的數量,若是這個數是-1,則意味
着沒有刪除任何記錄,除此以外,任何一個大於0的數字,則意味着
索引已經經過LiveDocsFormat進行了刪除存儲
DeletionCount,記錄某一個段刪除文檔的數量
Checksum,校驗和,上文有描述
SegCodec,是段文件的編碼和解碼後的名稱
CommitUserData,用來提交一個用戶提供不透明的Map結構的數據
FieldInfosGen ,域信息文件,記錄段更新的次數,-1無更新,大於0的數字
則表明這更新的次數。
UpdatesFiles,存儲在段過被更新過的文件。