`

【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都以前缀规则来存储,这一点在上图中很明显。

    

 

1
2
分享到:
评论

相关推荐

    Lucene 3.0 原理与代码分析

    其中总体架构和索引文件格式是Lucene 2.9的,索引过程分析是Lucene 3.0的。 鉴于索引文件格式没有太大变化,因而原文没有更新,原理和架构的文章中引用了前辈的一些图,可能属于早期的Lucene,但不影响对原理和架构...

    lucene3.0 lucene3.0

    lucene3.0 lucene3.0 lucene3.0 lucene3.0 lucene3.0

    Lucene3.0之查询类型详解

    Lucene3.0之查询处理(1):原理和查询类型 各种Query对象详解

    分词lucene

    http://lucene.apache.org (lucene-4.0.0.zip ) 中文分词器: 1. http://code.google.com/p/ik-analyzer/ (IK_Analyzer_2012FF_hf1.zip) 2. https://code.google.com/p/mmseg4j/ (mmseg4j-1.9.1.v20130120-...

    Lucene3.0创建索引

    Lucene3.0创建索引 读取目录下的所有txt文档格式的文件,然后生成一个索引文件到某目录下!

    lucene3.0庖丁+索引搜索程序

    lucene3.0庖丁+索引搜索程序,里面有代码示例

    Lucene3.0 使 用 教 程

    Lucene3.0 使 用 教 程 Lucene3.0 使 用 教 程 Lucene3.0 使 用 教 程 Lucene3.0 使 用 教 程 Lucene3.0 使 用 教 程 Lucene3.0 使 用 教 程 Lucene3.0 使 用 教 程 Lucene3.0 使 用 教 程 Lucene3.0 使 用 教 程 ...

    与lucene3.0兼容的庖丁jar包

    Exception in thread "main" java.lang.AbstractMethodError: org.apache.lucene.analysis.TokenStream.incrementToken()Z at org.apache.lucene.index.DocInverterPerField.processFields(DocInverterPerField....

    Lucene3.0特性,Lucene3.0特性

    Lucene3.0特性Lucene3.0特性

    lucene检索实例代码,自己总结的非常详细

    4:检查索引文件 5:恢复删除的索引 6:强制删除 7:更新索引 8:合并索引 9:高亮回显 供大家参考学习 public static void main(String[] args) { LuceneUtil luceneUtil = new LuceneUtil(); // 创建索引 // ...

    Lucene 3.0 原理与代码分析完整版

    1.3 Lucene学习总结之三:Lucene的索引文件格式 (1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 1.4 Lucene学习总结之三:Lucene的索引文件格式 (2) . . . . . . . . . . . ....

    lucene 3.0 API 中文帮助文档 chm

    lucene 3.0 API中文帮助,学习的人懂得的

    Lucene 3.0 原理与代码分析PDF

    Lucene学习总结之三:Lucene的索引文件格式(1) Lucene学习总结之三:Lucene的索引文件格式(2) Lucene学习总结之三:Lucene的索引文件格式(3) Lucene学习总结之四:Lucene索引过程分析(1) Lucene学习总结之...

    lucene3.0-highlighter.jar

    lucene3.0-highlighter.jar lucene3.0的高亮jar包,从lucene3.0源码中导出来的

    单点登录源码

    Solr & Elasticsearch | 分布式全文搜索引擎 | [http://lucene.apache.org/solr/](http://lucene.apache.org/solr/) [https://www.elastic.co/](https://www.elastic.co/) Quartz | 作业调度框架 | ...

    lucene3.0 分词器

    lucene3.0 中文分词器, 庖丁解牛

    lucene3.0 实例

    lucene3.0 实例,在jdk1.5,lucene3.0下调式通过,可以直接运行。先运行生成索引文件的class,在运行搜索的class。

    lucene3.0核心jar包

    lucene3.0的核心jar包文件,lucene3.0的核心jar包文件,lucene3.0的核心jar包文件,lucene3.0的核心jar包文件。

    Lucene使用

    含建索引,内容检索(多种方式的检索),中文分词(IKAnalyzer、PaodingAnalyzer);Lucene采用3.03版,太新版和 ik paoding不兼容。 ----------------------------------------- 极易分词只支持1.9-2.4版,未测试 ...

Global site tag (gtag.js) - Google Analytics