词典压缩

来源:互联网 发布:c语言进阶书籍pdf 编辑:程序博客网 时间:2024/04/27 19:53

1. 压缩目的: 将整个词典放在内存,避免多次访问硬盘

2. 假设压缩前词典采用定长数组格式,每个数组的类型如下:

 

struct

{

 char term[k];

 int freq;

 pointer posting;

}

 

假设指针长度为4, 则一个term耗费的内存为k + 4 + 4, 这里显然的浪费是在k,因为必须要指定一个定长的k。

 

因此一种压缩思路就是,将所有的term组装起来放在一个数组里,然后通过指针来索引,结构如下:

 

然后采用二分查找方式进行查找

 

在激进一点,可以在每个词开头前存入长度,同时几个term共用一个指针,但这样带来的问题就是查询效率的降低

原创粉丝点击