Lemur的Disk Index 一

Disk Index主要是把Memory Index存储到硬盘上的文件组织。它由一系列的物理文件组成。存储方式主要有Bulk tree和普通文件,XML三种类型。

 

Bulk tree是Btree的一种简化形式,相当于静态的Btree,Key可以为字符串或整数,Value是一个指定长度的字符数组,大小不能大于8K,在Bulk tree的实现代码中没有结点的分裂和合并算法,所以插入时必须把要插入的元素预先排序,按排好的顺序插入;查询时是按照二分查找来找所需值的。表三列出了索引文件的名称,存储的内容和类型。

由于索引中整数比较多,所以在存储整数时,采用整数变长编码压缩(也叫RVL压缩编码),主要思想是保留要存储序列中的第一个整数,之后依次存储后一个数与一个数的差。优点:压缩和解压缩速度非常快;缺点:压缩率不太高,压缩后的索引大小一般是原始文档的50%左右。

例如对于以下整数序列:10、12、15、19、24、30

压缩后,存储的序列为:10、2、3、4、5、6

表三

文件名称

存储的内容

类型

directFile

每个XML文档的文档结构

普通文件

documentLengths

记录每个XML文档的长度,每个XML文档的长度用4个字节表示

普通文件

documentStatistics

主要存储每个文档的统计信息,如XML文档在directFile中的偏移,XML文档中单词的数量,XML文档中不重复的单词的个数

普通文件

fieldFile

元素结点的倒排序索引文件

普通文件

frequentID

存储tf>=1000的termId到DiskTermData的映射

Bulk tree

frequentString

存储tf>=1000的term到DiskTermData的映射

Bulk tree

frequentTerms

将tf>=1000的每个单词的termId和termName构成一组,按顺序存储每组

普通文件

infrequentID

存储tf<1000的termId到DiskTermData的映射

Bulk tree

infrequentString

存储tf<1000的term到DiskTermData的映射

Bulk tree

invertedFile

单词的倒排序索引文件

普通文件

manifest

存储全局统计信息和配置信息

XML

infrequentID, infrequentString,主要存储以单词的编号termId (infrequentID)或单词本身term(infrequentString)Key,把DiskTermDataRVL压缩算法压缩后作为Value存入Bulk tree , DiskTermData主要包括: TermData(在下面介绍), termId, startOffset, length四部分。startOffset, length就是这个单词在invertedFile中对应的起始地址和长度。

frequentID, frequentString,存储的内容和infrequentID, infrequentString一样,区别在单词的tf不一样,查询时先从frequentID, frequentString从查找,没找到时再从infrequentID, infrequentString查找。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值