看了下压缩算法的发展历史,根据倒排索引的数据结构特点,个人认为zstd不适合做倒排索引压缩,举例说明下:

假设有一份文档倒排列表为:[300, 302, 303, 332],对于这组倒排数据,是没法***直接***采用zstd这类字典压缩算法的,因为里面没有重复数据(字典压缩通常重复数据较多,例如一个重复单词较多的txt文档适合zstd字典压缩)。

但是,如果对他们做差值运算后变为[300, 2, 1, 29],实际上你会发现2,1,29这些数字比原始数据小得多而可以用更少的位数来存储。这就是目前倒排索引使用的压缩算法原理。

综上所述,es里原始数据其实比较适合zstd算法,但是由于其内置了Lz4,替换的价值不大。

补充:

(1)压缩算法的发展历史(见:http://blog.csdn.net/kimylrong/article/details/39405981 ),压缩算法的分类如下:

Lossless

Entropy type

  • Unary
  • Arithmetic
  • Asymmetric Numeral Systems
  • Golomb
  • Huffman 
    • Adaptive
    • Canonical
    • Modified
  • Range
  • Shannon
  • Shannon–Fano
  • Shannon–Fano–Elias
  • Tunstall
  • Universal 
    • Exp-Golomb
    • Fibonacci
    • Gamma
    • Levenshtein

Dictionary type

  • Byte pair encoding
  • DEFLATE
  • Snappy
  • Lempel–Ziv 
    • LZ77 / LZ78 (LZ1 / LZ2)
    • LZJB
    • LZMA
    • LZO
    • LZRW
    • LZS
    • LZSS
    • LZW
    • LZWL
    • LZX
    • LZ4
    • Brotli
    • Statistical
    • Zstd

Other types

  • BWT
  • CTW
  • Delta
  • DMC
  • MTF
  • PAQ
  • PPM
  • RLE

其中,熵编码方法是倒排索引压缩普遍采用的算法,例如上面标红的golomb或者Shannon–Fano–Elias算法,而字典压缩是一般性数据的压缩。

(2)倒排索引压缩的算法历史(见:http://www.cnblogs.com/bonelee/p/6879663.html )

转载于:https://www.cnblogs.com/bonelee/p/6904052.html

为什么倒排索引不采用zlib这样的字典压缩算法——因为没法直接使用啊相关推荐

  1. 采用ZLIB及MINIZIP进行文件解压缩及加解密

    from:http://www.luoriver.com/news-d-i233-s25-m58-b58.html ZLIB开源库采用的是DEFLATE压缩算法,已经不支持加密功能,实际上功能还存在于 ...

  2. HTTP 首部:通用首部、请求首部、响应首部和实体首部

    HTTP 首部用于给服务器和客户端提供报文主体大小.使用的语言及认证消息等内容.首部字段由字段名和字段值构成,中间用冒号「:」隔开.有些首部是某些报文专用的,如请求首部只适用于请求报文中,有些通用些. ...

  3. Http头信息(二)——请求头信息(一)

    文章目录 前言 1. `Accept` 2. `Accept-Charset` 3. `Accept-Encoding` 4. `Accept-Language` 5.`Authorization` ...

  4. HTTP 请求头与响应头详解

    一.概念 HTTP 是超文本传输协议(HyperText Transfer Protocol),HTTP 请求头与响应头是指客户端与服务端在传输过程中对所传输资源的参数描述. 二.报文头说明 HTTP ...

  5. Zlib压缩算法:LZ77、LZ78、霍夫曼编码、滑动窗口、Rabin-Karp算法、哈希链、I/O缓冲区

    Table of Contents 1.简介 1.1 什么是zlib 2.压缩算法 2.1 放气 2.2 LZ77 2.2.1 滑动窗口 2.2.2 长距离对 2.3 霍夫曼编码 3. zlib的实现 ...

  6. zlib——Usage Example翻译

    我们经常会遇到有关应如何使用deflate()和inflate()函数的问题. 用户想知道何时应该提供更多的输入,何时应该使用更多的输出,如何处理Z_BUF_ERROR,如何确保进程正确终止,等等. ...

  7. 字符编码、Unicode原理、数据流压缩Zlib与Miniz的实现

    字符集和字符编码的区别和联系 字符集:多个字符的集合.例如 GB2312 是中国国家标准的简体中文字符集,GB2312 收录简化汉字(6763 个)及一般符号.序号.数字.拉丁字母.日文假名.希腊字母 ...

  8. 倒排索引:ES倒排索引底层原理及FST算法的实现过程

    文章目录 引言 1.倒排索引核心原理 2.倒排索引的存储结构 2.1 倒排表(Posting List) 2.2 词项字典(Term Dictionary) 2.3 ​词项索引(Term Index) ...

  9. Windows Mobile下使用ZLIB压缩

    前言:     在当前手机应用中,可能压缩技术不太引起重视,但是我们可以注意到一点,当手机与服务器进行通信的时候,速度与稳定性是非常重要,在这一环节中,我们如果把原文件(或者原内容)直接发送到服务器, ...

最新文章

  1. 汇编中的DW:DW 定义一个字
  2. Java对日期操作处理类
  3. nginx实现http服务配置
  4. vue 如何计算list的长度_航母的水线长度到底如何计算?
  5. Go 语言 Gin 框架实战项目笔记
  6. Unity跨iOS、Android平台使用protobuf-net的方法
  7. 每日 30 秒 ⏱ 字符编码排雷录
  8. 边信息(即对应的两个数组值)_Python 数据分析 NumPy 模块迭代数组nditer方法详解...
  9. H5的sessionStorage 和 localStorage
  10. 编码 - ASCII码表
  11. Python并发编程相关及在爬虫实战中的使用
  12. 为什么4G、5G又称为蜂窝网络?跟蜂窝有什么关系?
  13. 设置apple watch解锁mac显示无法通信解决办法
  14. Linux设备模型之device_add
  15. 春夜宴从弟桃花园序 ——李白
  16. 2021年茶艺师(初级)模拟考试及茶艺师(初级)模拟考试题
  17. ◆聚会时可以玩的游戏◆
  18. Cisco AAA 详解
  19. Simpack求解器说明
  20. 分辨真假NIKE的高招

热门文章

  1. Python虚拟环境pyenv、venv(pyvenv)、virtualenv之间的区别,终于搞清楚了!
  2. linux下eaccelerator,memcache,memcached安装
  3. mysql job 运行时间设置_mysql 的job 设置
  4. em算法python代码_EM 算法求解高斯混合模型python实现
  5. python 模拟键盘_python+selenium模拟键盘输入
  6. 5图片展示_做跨境电商想拍出爆款产品图片,我只用这五招
  7. c++ 四舍五入保留两位小数_Excel中保留小数点位数
  8. 机器人图形变变变_幼儿园大班数学活动《图形变变变》PPT课件教案下载 - 快思幼教网...
  9. 宁波大学计算机王老师,王翀_宁波大学研究生导师信息
  10. mySQL_connect怎么调用_Mysql ConnectC/C++使用