FOR压缩算法
一、倒排索引的数据结构
倒排表的压缩算法:FOR、RBM
词项索引的检索原理:FST
二、FOR压缩算法
如上图,假设倒排表中最理想的一行id为1,2,3......100 W个连续数字
图Ⅰ:若没有使用FOR压缩算法,则有100W个int类型的数字,1数字=4字节,则有400W字节,约占4M存储空间。1字节=8bit,则1int需要32bit,即3200Wbit
若使用了FOR压缩算法,1-100W个连续数字,前后两个数字取差值,得到最终结果1,1,1.....1。100W个1,每个1需要2的0次方=1bit存储即可。最终结果为100Wbit,空间节省32倍
图Ⅱ:倒排表中id几乎不可能为连续数字,以73,300,302,332,343,372为例。6个int类型数字,不使用FOR压缩算法需要24byte
若使用FOR压缩算法,先取差值得到73,227,2,30,11,29。这时得出最大差值为227,227在2的8次方范围内,这样就只需要每个分配2的8次方的空间
在上面的基础上,我们发现有一个差值是2,这时FOR算法会根据一定原则自动分组,从而再次降低需要分配的存储空间
作者:http://cnblogs.com/lyc-code/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权力。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端