当前位置: 首页 > news >正文

倒排表的压缩算法

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

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

相关文章:

倒排表的压缩算法

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

Android studio实现自定义圆形进度条 带刻度进度条 计步效果 时速表 水波纹效果

目录 原文链接效果图values /layout /activity原文链接 效果图 点击重置后: 该项目总共实现了三种圆形进度条效果 CircleProgress:圆形进度条,可以实现仿 QQ 健康计步器的效果,支持配置进度条背景色、宽度、起始角度,支持进度条渐变DialProgress:类似 CircleProgress,…...

使用【宝塔+docker】在云服务器上部署基于SpringBoot 和 Dubbo RPC 的项目:踩坑记录

待部署的项目包括:前端front,服务提供者backend,服务消费者gateway,注册中心nacos 服务器信息:腾讯云入门级服务器2核2G(后续有对服务器进行升级) 部署工具:前端使用宝塔部署&#x…...

【算法与数据结构】617、LeetCode合并二叉树

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:采用递归的方式遍历二叉树,【算法与数据结构】144、94、145LeetCode二叉树的前中后遍历&am…...

ffmpeg把RTSP流分段录制成MP4,如果能把ffmpeg.exe改成ffmpeg.dll用,那音视频开发的难度直接就降一个维度啊

比如,原来我们要用ffmpeg录一段RTSP视频流转成MP4,我们有两种方案: 方案一:可以使用以下命令将rtsp流分段存储为mp4文件 ffmpeg -i rtsp://example.com/stream -vcodec copy -acodec aac -f segment -segment_time 3600 -reset_t…...

朝夕光年游戏自动化测试实践

朝夕光年是面向全球用户与开发者的游戏研发与发行业务品牌,致力于服务全球玩家,帮助玩家在令人惊叹的虚拟世界中一起玩耍与创造。 在游戏的研发过程中,游戏自动化一直是开展难度较大的工程,具体包括机房机架、设备调度、软件框架、…...

数据结构基本概念

一、数据 数据对象-数据元素-数据项(属性),前者由后者组成 二、数据结构 定义:按某种关系的数据元素的集合 三、数据类型 1、原子类型(例如整型) 2、结构类型(由原子类型组成,例如数组) 3、…...

【javaweb】学习日记Day9 - Mybatis 基础操作

目录 一、删除 (1)在mapper接口执行sql删除语句 ① 注解后sql语句没有提示怎么办? (2)测试层 (3)开启mybatis日志 (4)预编译SQL 二、新增 (1&#…...

Mybatis学习|Mybatis缓存:一级缓存、二级缓存

Mybatis缓存 MyBatis包含一个非常强大的查询缓存特性,它可以非常方便地定制和配置缓存。缓存可以极大的提升查询效率。 MyBatis系统中默认定义了两级缓存:一级缓存和二级缓存 默认情况下,只有一级缓存开启。(SqlSession级别的缓存,也称为本地…...

230903文本docx

处理文本 块级项目,每次文本超出右边界时都会添加一行.对段落,边界一般是页边距,但如果按列布局页,则也可是列边界,如果表格单元格内有段,则也可是单元格边界. 块级项属性指定其在页上的位置,如缩进项及段落前后间距.内联项属性一般指定显示内容的如字样,字体大小,粗体和斜体…...

Mysql-DML(数据处理语言)

-- 插入数据 insert into member values(1,张三,21,5000); insert into member(id,name) values(2,李四); insert into member values(3,王五,23,3000) ,(4,纪六,24,4000) ,(5,查七,25,5000); -- 更新(修改数据) 不加限制条件 该字段全部修改 update member set age…...

部署项目至服务器

安装conda https://zhuanlan.zhihu.com/p/489499097 个人租借的服务器如何进行端口的开放呢? 防火墙设置: 添加规则设置: 即可; 通常下租借的服务器没有防火墙设置 相关链接: https://blog.csdn.net/weixin_4520…...

OSI与TCP IP各层的结构与功能,都有哪些协议

分析&回答 OSI七层模型 层功能TCP/IP协议族应用层文件传输,电子邮件,文件服务,虚拟终端TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet表示层数据格式化,代码转换…...

【2023年11月第四版教材】第10章《进度管理》(第三部分)

第10章《进度管理》(第三部分) 7 估算活动持续时间7.1 估算活动持续时间7.2 类比估算★★★7.3 参数估算★★★7.4 三点估算★★★7.5 数据分析★★★ 7 估算活动持续时间 组过程输入工具和技术输出计划4,估算活动持续时间1.项目管理计划(进…...

【Vuex状态管理】Vuex的基本使用;核心概念State、Getters、Mutations、Actions、Modules的基本使用

目录 1_应用状态管理1.1_状态管理1.2_复杂的状态管理1.3_Vuex的状态管理 2_Vuex的基本使用2.1_安装2.2_创建Store2.3_组件中使用store 3_核心概念State3.1_单一状态树3.2_组件获取状态3.3_在setup中使用mapState 4_核心概念Getters4.1_getters的基本使用4.2_getters第二个参数4…...

Linux centos7 bash编程(循环与条件判断)

在编程训练中,循环结构与条件判断十分重要。 根据条件为真为假确定是否执行循环。 有时,根据条件的真假结果,决定执行哪些语句,这就是分支语句。 为了训练分支语句与循环语句,我们设计一个案例: 求一组…...

设计模式-6--装饰者模式(Decorator Pattern)

一、什么是装饰者模式(Decorator Pattern) 装饰者模式(Decorator Pattern)是一种结构型设计模式,它允许你在不修改现有对象的情况下,动态地将新功能附加到对象上。这种模式通过创建一个包装类,…...

质量属性案例-架构真题(二十一)

试题一 某电子商务公司升级会员与促销管理系统,向用户提交个性化服务,提高用户粘性。在项目建立之初,公司领导人一致认为目标是提升会员管理方式的灵活性,由于当前用户规模不大,用户简单,系统方面不需要做…...

nacos Error to process server push response

nacos2.0.3报错&#xff1a; Error to process server push response 解决办法&#xff1a; 排查项目当中有没有直接或间接依赖reflections&#xff1a; <dependency><groupId>org.reflections</groupId><artifactId>reflections</artifactId>…...

神经网络NLP基础 循环神经网络 LSTM

用的时候&#xff0c;只关心token的输入&#xff0c;以及hidden state就好了 sequence的length是多少&#xff0c;lstm的cell的数量就是多少 LSTM BI-LSTM stacked lstm GRU 实现...

告别卡顿与隐私担忧:用Docker Compose在1核1G VPS上部署高性能RustDesk私有服务器

在1核1G VPS上构建高性能RustDesk私有化服务的完整指南 远程协作已成为现代工作流中不可或缺的一环&#xff0c;而数据隐私和连接稳定性则是技术爱好者最关注的核心问题。开源远程桌面解决方案RustDesk以其轻量级架构和自托管能力&#xff0c;为追求完全控制权的用户提供了理想…...

libiec61850实战:手把手教你用C语言动态获取IED设备模型(附完整代码)

libiec61850实战&#xff1a;C语言动态解析未知IED设备模型的完整指南 在工业自动化与电力系统通信领域&#xff0c;IEC 61850标准已成为智能电子设备(IED)间交互的通用语言。面对一个未提供完整SCL配置文件的陌生IED设备&#xff0c;如何快速探查其内部数据模型结构&#xff1…...

AI超级计算机架构演进与性能优化解析

1. AI超级计算机的技术架构演进AI超级计算机的核心架构在过去六年发生了显著变化。2019年主流系统如Summit主要采用NVIDIA V100 GPU&#xff0c;而到2025年&#xff0c;xAI的Colossus已升级到H100/H200混合架构。这种演进主要体现在三个维度&#xff1a;1.1 计算单元设计原理现…...

NotebookLM文献管理到底靠不靠谱?——基于372篇实证论文的引用准确率压力测试报告

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM文献管理到底靠不靠谱&#xff1f;——基于372篇实证论文的引用准确率压力测试报告 为验证Google NotebookLM在学术场景下的引用可靠性&#xff0c;我们对372篇跨学科实证论文&#xff08;含…...

别再替换同义词!2026实测论文降AIGC工具:一次降至10%以下的排版保护指南

自从央视公开探讨初稿写作的AI味儿现象&#xff1a;据相关数据显示&#xff0c;近六成师生习惯使用生成式辅助&#xff0c;其中近三成学生将其用于核心初稿的撰写&#xff0c;各高校针对AIGC的审查便日益严格。 正是因为这种大背景&#xff0c;四月一到&#xff0c;定稿通知刚…...

【Claude Redis缓存方案实战白皮书】:20年架构师亲授高并发场景下99.99%命中率的5层缓存协同设计

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Claude Redis缓存方案的演进逻辑与设计哲学 Claude 系统在高并发对话场景下对低延迟、强一致性的缓存层提出严苛要求。其 Redis 缓存方案并非简单封装客户端&#xff0c;而是围绕“语义感知缓存生命周期…...

Zotero Format Metadata:让文献元数据格式化变得简单高效

Zotero Format Metadata&#xff1a;让文献元数据格式化变得简单高效 【免费下载链接】zotero-format-metadata Linter for Zotero. A plugin for Zotero to format item metadata. Shortcut to set title rich text; set journal abbreviations, university places, and item …...

隐私优先的本地数据处理:浏览器Cookie逆向工程解密

隐私优先的本地数据处理&#xff1a;浏览器Cookie逆向工程解密 【免费下载链接】Get-cookies.txt-LOCALLY Get cookies.txt, NEVER send information outside. 项目地址: https://gitcode.com/gh_mirrors/ge/Get-cookies.txt-LOCALLY &#x1f50d; 颠覆性认知&#xff…...

01_C语言学习路线与开发环境搭建

C语言学习路线与开发环境搭建 一、本篇文章要解决什么问题 你可能是第一次接触编程&#xff0c;或者从其他语言转过来想学 C 语言。不管哪种情况&#xff0c;摆在面前的第一个问题都是&#xff1a;从哪开始&#xff1f; 这篇文章就帮你解决三个最实际的问题&#xff1a; C 语言…...

小米Tag防丢器深度解析:BLE与UWB双技术路径如何重塑寻物体验

1. 项目概述&#xff1a;小米入局&#xff0c;防丢市场迎来“鲶鱼”在智能硬件领域&#xff0c;防丢追踪器一直是个不温不火但又刚需明确的存在。苹果的AirTag凭借其庞大的Find My网络&#xff0c;几乎定义了行业标准&#xff0c;但也因其生态封闭性&#xff0c;让安卓用户望而…...