SegmentInfos
segmentInfo對(duì)象的集合肉渴,其中包含用于與文件系統(tǒng)相關(guān)的段進(jìn)行操作的方法。
索引中的活動(dòng)段存儲(chǔ)在段信息文件 segments_N中雹顺,索引中可能有一個(gè)或多個(gè)segments_N文件野来,但是具有最大值的那個(gè)是有效的段信息文件(當(dāng)存在較舊的segments_N文件時(shí),因?yàn)樗鼈儠簳r(shí)無(wú)法刪除疾牲,或者植捎,writer正在提交,或者正在使用自定義 IndexDeletionPolicy
)阳柔。此文件按名稱列出每個(gè)段焰枢,并包含有關(guān)編解碼器和刪除的generation的詳細(xì)信息。
還有一個(gè)segments.gen文件舌剂,該文件包含當(dāng)前索引的generation(segments_N中的N)济锄。這僅用作備用,以防單獨(dú)的目錄列表無(wú)法準(zhǔn)確確定當(dāng)前的generation(對(duì)于某些具有基于時(shí)間的目錄緩存到期的NFS客戶端的情況)霍转。此文件簡(jiǎn)單地包含一個(gè) Int32版本Header( FORMAT_SEGMENTS_GEN_CURRENT)荐绝,接著的是以Int64格式寫入兩次的generation
文件:
- segments.gen: GenHeader, Generation, Generation, Footer
- segments_N: Header, Version, NameCounter, SegCount, <SegName, SegCodec, DelGen, DeletionCount, FieldInfosGen, DocValuesGen, UpdatesFiles>SegCount, CommitUserData, Footer
數(shù)據(jù)類型:
- Header --> CodecHeader
- GenHeader, NameCounter, SegCount, DeletionCount --> Int32
- Generation, Version, DelGen, Checksum, FieldInfosGen, DocValuesGen --> Int64
- SegName, SegCodec --> String
- CommitUserData --> Map<String,String>
- UpdatesFiles --> Map<Int32, Set<String>>
- Footer --> CodecFooter
字段描述:
- Version計(jì)數(shù)通過(guò)添加或刪除文檔來(lái)更改索引的頻率.
- NameCounter用于為新段文件生成名稱
- SegName是段的名稱,并用作組成段索引的所有文件的文件名前綴避消。
- DelGen是刪除文件的generation計(jì)數(shù)低滩。如果這是-1,則沒(méi)有刪除沾谓。大于零的任何值意味著存儲(chǔ)了刪除的LiveDocsFormat
- DeletionCount記錄此段中已刪除文檔的數(shù)量
- SegCodec是編碼此段的解碼器的名稱
- CommitUserData存儲(chǔ)用戶提供的可選的不透明Map <String委造,String>傳遞給IndexWriter.setCommitData(java.util.Map).
- FieldInfosGen是fieldInfos文件的generation計(jì)數(shù)。如果為-1均驶,則該段中的fieldInfos沒(méi)有更新昏兆,大于零的任何值意味著存儲(chǔ)的fieldInfos都有更新
- DocValuesGen是可更新DocValues的生成計(jì)數(shù)。如果為-1妇穴,則該段中的DocValues沒(méi)有更新爬虱。大于零的任何意味著存儲(chǔ)的DocValues都有更新
- DocValuesGen是可更新DocValues的generation計(jì)數(shù)。如果為-1腾它,則該段中的DocValues沒(méi)有更新跑筝。大于零的任何意味著存儲(chǔ)的DocValues都有更新
- UpdatesFiles存儲(chǔ)每個(gè)字段在該段中更新的文件集
Lucene40SegmentInfoFormat
文件:
- .si: Header, SegVersion, SegSize, IsCompoundFile, Diagnostics, Attributes, Files
數(shù)據(jù)類型:
- Header --> CodecHeader
- SegSize --> Int32
- SegVersion --> String
- Files --> Set<String>
- Diagnostics, Attributes --> Map<String,String>
- IsCompoundFile --> Int8
字段描述:
- SegVersion是創(chuàng)建的段的代碼版本。
- SegSize是段索引中包含的文檔數(shù)
- IsCompoundFile記錄段是否寫為復(fù)合文件瞒滴。如果為-1曲梗,則該段不是復(fù)合文件赞警。如果為1,則段是復(fù)合文件虏两。
- Checksum 包含segments_N文件中所有字節(jié)的CRC32校驗(yàn)和愧旦,這用于在打開(kāi)索引時(shí)驗(yàn)證文件的完整性
- Diagnostics Map由其
IndexWriter
創(chuàng)建的每個(gè)段作為調(diào)試輔助工具私密編寫。它包括元數(shù)據(jù)定罢,如當(dāng)前的Lucene版本笤虫,操作系統(tǒng),Java版本祖凫,創(chuàng)建段的原因(merge琼蚯,flush,addIndexes)等惠况。 - Attributes:編解碼器 - 私有屬性的鍵值映射
- Files 是此段引用的文件列表