Lucene原始碼解析--刪除文件檔案(.del)
如果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 用二進位制儲存,二進位制資料不用差值表示。
.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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Lucene原始碼解析--Lock檔案原始碼
- Lucene原始碼解析--Compound File 組合檔案原始碼
- Lucene原始碼解析--Field類原始碼
- Lucene原始碼解析--Lucene中的CloseableThreadLocal類原始碼thread
- Lucene原始碼解析--搜尋過程<二>原始碼
- 定時刪除檔案指令碼指令碼
- 刪除檔案
- 定期刪除歸檔檔案的指令碼指令碼
- linux 下刪除亂碼檔案Linux
- SVN !檔案刪除
- rm 刪除檔案
- 檔案的刪除
- 批次刪除檔案
- Git——刪除檔案Git
- 原始碼解析Flask的配置檔案原始碼Flask
- Git刪除指定檔案Git
- dll檔案刪除不了
- Elasticsearch 刪除文件Elasticsearch
- MongoDB 刪除文件MongoDB
- Lucene原始碼解析--IndexWriterConfig配置引數說明原始碼Index
- Linux下批量刪除空檔案或者刪除指定大小的檔案Linux
- 強制刪除歸檔檔案
- 刪除歸檔日誌檔案
- 1.7.8. 刪除資料庫密碼檔案資料庫密碼
- 刪除七天以前檔案的指令碼指令碼
- win10休眠檔案有必要刪除嗎 刪除休眠檔案的方法Win10
- u盤裡的檔案無法刪除 如何刪除u盤裡刪不掉的檔案
- win10 刪除文件失敗怎麼解決 win10檔案刪除不了怎麼辦Win10
- Linux刪除檔案命令Linux
- 批量刪除大量小檔案
- MySQL socket檔案被刪除MySql
- Linux批量刪除檔案Linux
- Oracle 刪除資料檔案Oracle
- 新增、刪除日誌檔案
- oracle刪除資料檔案Oracle
- 刪除github上的檔案Github
- windows 下刪除.svn檔案Windows
- AIX刪除檔案系統AI