Lucene原始碼解析--刪除文件檔案(.del)

百聯達發表於2013-07-19
如果segment中有被刪除的document,則這些資訊會被儲存在.del檔案當中。

.del檔案的結構:

Format:在此檔案中,Bits 和DGaps 只能儲存其中一,-1 表示儲存DGaps,非負值表示儲存Bits。

ByteCount:此段中有多少文件,就有多少個bit 被儲存,但是以byte 形式計數,即Bits 的大小應該是byte 的倍數。

BitCount:Bits 中有多少位被至1,表示此文件已經被刪除。

Bits:一個陣列的byte,大小為ByteCount,應用時被認為是byte*8 個bit。


DGaps:如果刪除的文件數量很小,則Bits 大部分位為0,很浪費空間。DGaps 採用以下的方式來儲存稀疏陣列:比如第十,十二,三十二個文件被刪除,於是第十,
十二,三十二位設為1,DGaps 也是以byte 為單位的,僅儲存不為0 的byte,如第1 個byte,第4 個byte,第1 個byte 十進位制為20,第4 個byte 十進位制為1。於是儲存成DGaps,第1 個byte,位置1 用不定長正整數儲存,值為20 用二進位制儲存,第2 個byte,位置4 用不定長正整數儲存,用差值為3,值為1 用二進位制儲存,二進位制資料不用差值表示。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28624388/viewspace-766687/,如需轉載,請註明出處,否則將追究法律責任。

相關文章