倒排表的压缩算法

For压缩算法

这是倒排表的一种压缩算法。

还是那个问题,如果"小米" 这个词项,在多文档里都有,则就会导致倒排表很大,这时候就会设计到了压缩算法,这里说的是,倒排表。

那末我们来看看 for压缩算法是怎么压缩数据呢?其实你可以理解为它是将posting list(无论数字多大都是用int去存的) 转换为一个差值list   (deltas list)去存的,也就是我们之前存的不是文件id吗,这回我们去存和前一个的差值,这样是不是存的这个数就会变小,那这样我们需要的位数是不是就会变小,靠这个来压缩我们的函数

不如说上边这个 我们得到一个差值集合之后呢

发现就可以用8位去存储这些数,这样是不是跟用int去存储就变小了

但是呢,我们又发现 比如 2 这个 数字用8位去存储是不是又浪费了

我们可以在保证顺序的时候去分 在2那分成一半一半把

细心的同学又发现了,为什么不把单独的数 拎出来那么分呢?2分5字节这不还浪费吗。

但是除了要保证高效的压缩方法,还要保证快速的解码啊,我们最终还得恢复成最原来的那个倒排表。我们每块数组用了几个数组,也是要记录在磁盘上的,如果我们一个一个差这会导致这个记录又浪费了空间。这个记录呢占用1个字节

那具体这个数组拆分到什么程度,如果这个数组足够稠密的时候,就不用拆了,就是说这一块的数字特别都比较接近。这个也是动态计算出来的。

RBM压缩算法

如果数值不密集,也就是说你一个很大一个很小,这时候我们就用RBM压缩算法。

我们这时候就不用减法了,我们用除法

 

因为我们int类型是32位。我们把32位这么看,一个高16位(商),一个低16位(余数)

所以我们先把每个数除以65536也就是2^16 得到一个除数和一个余数。我们就把一个大数换成了两个小数。

那么这两个数是怎么存储起来的。其实是用Container存的

我们把那个商作为一个key 用short方法去存储

然后余数存在对应key 所对应的容器之中。

如图你就知道了

Container 包括三种container

arraycontainer  我们的上述例子就是用的这个容器

Bitmapcontainer  这个占用的空间永远位8kb

Runcontainer

这三种容器可以自己去学习

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/99040.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

南方科技大学博士研究生奖助学金,深圳大学

目录 南方科技大学 中南大学 南京大学 厦门大学 苏州大学 中南财经政法大学 深圳大学 南方科技大学 https://ocean.sustech.edu.cn/ocean/public/upload/download/3/2.pdf 南方科技大学的在读研究生,每人每年都会得到40000元的补助,这40000块钱分…

【FreeRTOS】【应用篇】消息队列【下篇】

前言 本篇文章主要对 FreeRTOS 中消息队列的概念和相关函数进行了详解消息队列【下篇】详细剖析了消息队列中发送、接收时队列消息控制块中各种指针的行为,以及几个发送消息和接收消息的函数的运作流程笔者有关于 【FreeRTOS】【应用篇】消息队列【上篇】——队列基…

Ubuntu虚拟机网络无法连接的几种解决方法

虚拟机网络无法连接的几种解决方法 问题状况描述可能的解决方案 问题状况描述 Ubuntu虚拟机没有网络,无法ping通互联网,左上角网络连接图标消失等情况可能的解决方案 1.重启虚拟机网络编辑器 2.重启虚拟机网络适配器 3.重启虚拟机网络服务器1.重启网络…

elementUI中的table动态表单记录

form表单与table一起使用 之前一直以为form表单是单独使用&#xff0c;现在联动起来发现只是套了一层外壳&#xff0c;并不是很麻烦的事情 form的单独使用 <el-form :model"ruleForm" status-icon :rules"rules" ref"ruleForm" label-widt…

【力扣每日一题】2023.9.4 序列化和反序列化二叉搜索树

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 题目给我们一棵搜索二叉树&#xff0c;要我们将这棵二叉树转变为字符串&#xff0c;同时我们需要根据字符串再变回二叉树&#xff0c;具体…

明星录制祝福视频:传递温情与关怀的独特方式

在当今社交媒体和数字化时代&#xff0c;明星录制祝福视频已经成为一种新颖而独特的方式&#xff0c;用来表达温馨祝福、分享喜悦&#xff0c;或者为特殊的时刻增添一份特别的意义。无论是生日、结婚、毕业&#xff0c;还是节日、活动等&#xff0c;明星录制的祝福视频能够让人…

Axure RP美容美妆医美行业上门服务交互原型图模板源文件

Axure RP美容美妆医美行业上门服务交互原型图模板源文件&#xff0c;原型内容属于电商APP&#xff0c;区别于一般电商&#xff0c;它的内容是‘美容美发美妆等’上门服务等。大致流程是线上买单&#xff0c;线下实体店核销消费。 附上预览演示&#xff1a;axure9.com/mobile/73…

Android Activity启动流程一:从Intent到Activity创建

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、人工智能等&#xff0c;希望大家多多支持。 目录 一、概览二、应用内启动源码流程 (startActivity)2.1 startActivit…

C#通过ModbusTcp协议读写西门子PLC中的浮点数

一、Modbus TCP通信概述 MODBUS/TCP是简单的、中立厂商的用于管理和控制自动化设备的MODBUS系列通讯协议的派生产品&#xff0c;显而易见&#xff0c;它覆盖了使用TCP/IP协议的“Intranet”和“Internet”环境中MODBUS报文的用途。协议的最通用用途是为诸如PLC&#xff0c;I/…

k8s 启动和删除pod

k8s创建pod pod的启动流程 流程图 运维人员向kube-apiserver发出指令&#xff08;我想干什么&#xff0c;我期望事情是什么状态&#xff09; api响应命令,通过一系列认证授权,把pod数据存储到etcd,创建deployment资源并初始化。(期望状态&#xff09; controller通过list-wa…

MEMS传感器的原理与构造——单片式硅陀螺仪

一、前言 机械转子式陀螺仪在很长的一段时间内都是唯一的选项&#xff0c;也正是因为它的结构和原理&#xff0c;使其不再适用于现代小型、单体、集成式传感器的设计。常规的机械转子式陀螺仪包括平衡环、支撑轴承、电机和转子等部件&#xff0c;这些部件需要精密加工和…

博客程序系统其它功能扩充

一、注册功能 1、约定前后端接口 2、后端代码编写 WebServlet("/register") public class RegisterServlet extends HttpServlet {Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置…