【Lucene3.0 初窥】索引文件格式(4):dictionary数据[.tii/.tis]

Terms数据 磁盘文件存储细节

 

从这篇开始,已经涉及到倒排索引表的信息存储问题了。我们都知道倒排索引表中的Dictionary有许多不同的terms组成,Lucene关于这些terms数据的存储,就放在磁盘的.tii和.tis文件中。

 

★ .tii  词典 索引文件    .tis  词典数据文件

 

1、tii 保存了tis中每 隔 IndexInterval个词的位置信息,这是为了加快对词典文件tii中词的查找速度

 

具体结构如下:

 TermInfoIndex (.tii)-->  TIVersion, IndexTermCount, IndexInterval, SkipInterval, MaxSkipLevels, TermIndices

TIVersion --> UInt32   版本号

IndexTermCount --> UInt64   词典索引文件中包含的词数。
IndexInterval --> UInt32  (同tis)
SkipInterval --> UInt32  (同tis)
TermIndices -->  <TermInfo, IndexDelta> IndexTermCount      IndexTermCount 个项的数组,每一项包括两部分,第一部分是词本身(TermInfo),第二部分是在词典.tis文件中的偏移量(IndexDelta)。假设IndexInterval为 4,此数组中保存第4个,第8个,第12个词。

 

TermInfo --> <Term, DocFreq, FreqDelta, ProxDelta, SkipDelta>  (同 tis)

IndexDelta --> VLong  用来确定该 Term TermInfo .tis 文件中的位置,特别指出,它是该 term 的数据的位置与前一个 term 位置的差值。 (关于差值规则请参见:《索引文件格式(1):基础知识

 

2、tis 存放索引表中Dictionary的所有Term的信息。

 

具体结构如下:

TermInfoFile (.tis)--> TIVersion, TermCount, IndexInterval, SkipInterval, MaxSkipLevels, TermInfos

 

TIVersion --> UInt32  版本号

TermCount --> UInt64  词典中包含的总的词数

IndexInterval --> UInt32  为了加快对词的查找速度,也应用类似跳跃表的结构,假设IndexInterval为4,则在词典索引(tii)文件中保存第4个,第8个,第12个词,这样可以加快在词典文件中查找词的速度。

SkipInterval --> UInt32   倒排表无论是文档号及词频,还是位置信息,都是以跳跃表的结构存在的,SkipInterval是跳跃的步数。

MaxSkipLevels --> UInt32  跳跃表是多层的,这个值指的是跳跃表的最大层数。

 

TermInfos --> <TermInfo> TermCount      TermCount个项的数组,每一项代表一个具体词的信息。单个TermInfo 的结构如下: TermInfo --> <Term, DocFreq, FreqDelta, ProxDelta, SkipDelta> 其中:

Term --> <PrefixLength, Suffix, FieldNum> 词语文本信息

PrefixLength -->VInt    前缀规则中的前缀长度

Suffix--> String   利用前缀规则存放词的文本信息(关于前缀规则请参见:《索引文件格式(1):基础知识 》)。

FieldNum--> VInt  词属于的域的域号

 

DocFreq--> VInt  有多少篇文档包含此词

FreqDelta ,ProxDelta --> VInt   此词的词频和位置信息在frq,prx中的偏移地址

SkipDelta --> VInt  

 

 

★  专题用例 :

 

 关于例子的详细信息参见《索引文件格式(2):文件 结构总体框架 》最后的说明。

(1) 解释一下tii文件的数据

  tii文件最重要的一个就是IndexInterval。它表明了tii中记录了tis中每隔IndexInterval个Term的起始地址。

 

(2) 解释一下tis文件的数据

我们将name ,path, content域都建立了索引,但name, path域并没有用Analyzer 进行分词。因此会出现像:"e:\实验\content\lucene 1.txt"这样的Term。

 

  所有term都以前缀规则来存储,这一点在上图中很明显。

    

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值