不为失败找理由,要为成功找方法。

lucene倒排索引关于数据压缩的问题

Lucene | 作者 code4j | 发布于2018年09月14日 | 阅读数:4922

这两天了解了下倒排索引底层的一些数据处理机制,看到lucene的实现中,会真多字符串或数字做压缩,从而减小磁盘内存占用空间,同时提升检索效率。
  
例如delta encoding,他是将顺序的数值进行压缩,只保存一个增量数字,1000,1001,1002,1003保存成 1000,1,2,3 压缩数值大小,结合变长压缩等讲小数字占用位数降下来,达到减小占用空间的效果。
 
但是这种数据要怎么查询呢,比如索引 teerm index部分的数据对数字创建索引,数据插入的时候进行编码,会导致很多数据不再是原来的数值,如果插入过程中出现类似平衡树那样的旋转或者b+树的分裂等等,要怎么找到这个数字本身的值呢?
 
已邀请:

ghnjk

赞同来自: 王庆焕

新人围观。类似delta encoding这种算法本身决定了需要从头开始读才能计算出原来的值。
一个猜想:磁盘读写不会只操作几个字节。 是不是根据block选择压缩算法进行压缩block的数据。读取的时候,反正需要读取一块区域的数据。读取过程中进行解压。

王庆焕 - https://discuss.elastic.co/u/wangqinghuan/

赞同来自: ghnjk

zqc0512 - andy zhou

赞同来自:

数据有原始值的。你看看,一般用keyword就行。特殊化要求的用text,模糊查询。
我用这么久好像还没有发现修改值的情况。
在kibana上面 search的时候,你发现有变化的话,看json内容。这是没有修改的。

要回复问题请先登录注册