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都以前缀规则来存储,这一点在上图中很明显。
分享到:
相关推荐
在Lucene3.0中创建索引是一个关键功能,可以帮助用户快速地检索和管理大量的文本数据。本篇文章将详细介绍如何使用Lucene3.0来创建索引,并通过一个具体的例子来演示整个过程。 #### 一、Lucene3.0简介 Lucene是一...
lucene3.0 lucene3.0 lucene3.0 lucene3.0 lucene3.0
《深入剖析Lucene3.0:庖丁解牛与索引搜索实践》 在IT行业中,搜索引擎技术扮演着至关重要的角色,而Lucene作为一个开源全文检索库,为开发者提供了强大的文本搜索功能。本文将深入探讨Lucene3.0版本,结合“庖丁解...
4. **Lucene3.0查询工具和类**: - **IndexSearcher**:是主要的检索工具,提供了所有搜索操作的接口,通常使用Directory初始化。 - **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-...
import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.index.IndexWriter; import org...
Exception in thread "main" java.lang.AbstractMethodError: org.apache.lucene.analysis.TokenStream.incrementToken()Z at org.apache.lucene.index.DocInverterPerField.processFields(DocInverterPerField....
4:检查索引文件 5:恢复删除的索引 6:强制删除 7:更新索引 8:合并索引 9:高亮回显 供大家参考学习 public static void main(String[] args) { LuceneUtil luceneUtil = new LuceneUtil(); // 创建索引 // ...
索引是 Lucene 的关键,它将文本数据转换为倒排索引,以便快速查找匹配查询的文档。最后,搜索过程是基于查询对象进行的,用户输入查询字符串,Lucene 返回相关的文档列表。 在给定的实例中,有两个主要的类:一个...
《Lucene 3.0 原理与代码分析完整版》是一本深入解析Lucene 3.0搜索引擎库的专业书籍。Lucene是Apache软件基金会的开源项目,它为Java开发者提供了一个高性能、全文检索的工具包,广泛应用于各种信息检索系统。这...
在 Lucene 3.0 中,索引过程包括分词、字段处理、文档ID分配等步骤,生成的索引文件包括词典、Posting List、Doc IDs 等组件。 2. **分词器(Analyzer)**:Lucene 提供了多种分词器,如 StandardAnalyzer、...
lucene 3.0 API中文帮助,学习的人懂得的
在Lucene3.0中,索引是数据检索的基础。它通过将文本数据转换为倒排索引来实现快速查询。倒排索引将每个文档中的词项映射到包含这些词项的文档列表,使得搜索时可以迅速找到相关文档。在这一版本中,索引构建过程...
《Lucene 3.0 API CHM指南》 Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发,广泛应用于各种搜索引擎和信息检索系统。本指南主要关注的是Lucene 3.0版本的API,这是一个强大的工具集,用于在Java环境...
**Lucene 3.0 全文信息检索** Lucene 是一个由Apache软件基金会4 Jakarta项目组开发的开源全文检索引擎工具包。自1999年发布以来,Lucene 已经发展成为Java世界中最为广泛使用的全文检索库,为开发者提供了构建高...
在Lucene 3.0版本中,这个功能得到了进一步加强,支持了多种文件格式的搜索,使得用户可以对各种类型的文档进行快速而准确的检索。 **1. Lucene索引原理** Lucene的核心在于它的索引机制。索引过程主要包括文档...
**Lucene 2.0 API 和 Lucene 3.0 API 深度解析** Lucene 是一个由 Apache 软件基金会开发的全文搜索引擎库,它为开发者提供了在 Java 应用程序中实现高性能、可扩展的全文搜索功能的能力。Lucene 的 API 设计得相当...