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都以前缀规则来存储,这一点在上图中很明显。
分享到:
相关推荐
其中总体架构和索引文件格式是Lucene 2.9的,索引过程分析是Lucene 3.0的。 鉴于索引文件格式没有太大变化,因而原文没有更新,原理和架构的文章中引用了前辈的一些图,可能属于早期的Lucene,但不影响对原理和架构...
lucene3.0 lucene3.0 lucene3.0 lucene3.0 lucene3.0
Lucene3.0之查询处理(1):原理和查询类型 各种Query对象详解
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创建索引 读取目录下的所有txt文档格式的文件,然后生成一个索引文件到某目录下!
lucene3.0庖丁+索引搜索程序,里面有代码示例
Lucene3.0 使 用 教 程 Lucene3.0 使 用 教 程 Lucene3.0 使 用 教 程 Lucene3.0 使 用 教 程 Lucene3.0 使 用 教 程 Lucene3.0 使 用 教 程 Lucene3.0 使 用 教 程 Lucene3.0 使 用 教 程 Lucene3.0 使 用 教 程 ...
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特性
4:检查索引文件 5:恢复删除的索引 6:强制删除 7:更新索引 8:合并索引 9:高亮回显 供大家参考学习 public static void main(String[] args) { LuceneUtil luceneUtil = new LuceneUtil(); // 创建索引 // ...
1.3 Lucene学习总结之三:Lucene的索引文件格式 (1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 1.4 Lucene学习总结之三:Lucene的索引文件格式 (2) . . . . . . . . . . . ....
lucene 3.0 API中文帮助,学习的人懂得的
Lucene学习总结之三:Lucene的索引文件格式(1) Lucene学习总结之三:Lucene的索引文件格式(2) Lucene学习总结之三:Lucene的索引文件格式(3) Lucene学习总结之四:Lucene索引过程分析(1) Lucene学习总结之...
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 实例,在jdk1.5,lucene3.0下调式通过,可以直接运行。先运行生成索引文件的class,在运行搜索的class。
lucene3.0的核心jar包文件,lucene3.0的核心jar包文件,lucene3.0的核心jar包文件,lucene3.0的核心jar包文件。
含建索引,内容检索(多种方式的检索),中文分词(IKAnalyzer、PaodingAnalyzer);Lucene采用3.03版,太新版和 ik paoding不兼容。 ----------------------------------------- 极易分词只支持1.9-2.4版,未测试 ...