Lucene初探之数据格式详情(六)

15 篇文章 0 订阅

Lucene初探之数据格式详情(六)

在之前的几篇文章中,我们共同探索了Lucene创建索引文件时正向信息、反向信息和标准因子的存储方式和原理。在实际的生产应用环境中,由于业务等需要,我们不仅仅只是需要创建索引,有时候我们还需要去删除或者更新索引中的特定文件,但是Lucene本身不支持直接去更新文件,所以,更新操作会被分为删除、插入两个步骤。同时在生产环境中由于各种原因,如果直接去在物理上删除掉相关文档的话会导致一系列的问题,所以,每一个删除操作都会生成一个del文件,其中记录了被删除的文档的信息,这些信息是被保护的,每次搜索引擎对索引进行查询匹配之后,会通过该文件将结果中的被删除文档过滤掉。下面是del文件的存储方式:

  • 被删除文件(Deleted Documents:del)
    • Format:在此文件中,Bits和DGaps是以或的关系存储的,-1表示DGaps,非负值表示被保存的是Bits;
    • ByteCount:比奥斯此段中有多少文档,存储方式为bit,但是是以Byte来计数的,即Bits和Byte的数值关系为倍数;
    • BitCount:Bits中有多少位1,就代表有多少文档被删除;
    • Bits:一个ByteCount大小的数组,每一个数组为一个byte,在应用时被认为byte*8个bit;
    • DGaps:DGaps是为了减少Bits的浪费而设置的,因为如果说被删除的文档数量很少,那么Bits中的1的数量就会很少,也就是说0的数量会很多。当第十个、十二、三十二个数组被删除,第十、十二、三十二位被置为1,DGaps也是以Byte为单位,仅仅保存不为0的Byte,如第1个Byte,第4个Byte,第一个Byte十进制为20,第4个Byte十进制为1。于是保存为DGaps,第一个Byte,位置1使用不定长正整数保存,值为20用二进制保存,第2个byte,位置4用不定长正整数保存,用差值为3,值为1用二进制保存,二进制数据不以差值保存。

最后,我们总结一下整个Lucene的索引存储格式如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值