`

【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
分享到:
评论

相关推荐

    Lucene3.0创建索引

    在Lucene3.0中创建索引是一个关键功能,可以帮助用户快速地检索和管理大量的文本数据。本篇文章将详细介绍如何使用Lucene3.0来创建索引,并通过一个具体的例子来演示整个过程。 #### 一、Lucene3.0简介 Lucene是一...

    lucene3.0 lucene3.0

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

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

    《深入剖析Lucene3.0:庖丁解牛与索引搜索实践》 在IT行业中,搜索引擎技术扮演着至关重要的角色,而Lucene作为一个开源全文检索库,为开发者提供了强大的文本搜索功能。本文将深入探讨Lucene3.0版本,结合“庖丁解...

    Lucene3.0之查询类型详解

    4. **Lucene3.0查询工具和类**: - **IndexSearcher**:是主要的检索工具,提供了所有搜索操作的接口,通常使用Directory初始化。 - **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使用介绍及实例

    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...

    与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....

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

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

    lucene3.0 实例

    索引是 Lucene 的关键,它将文本数据转换为倒排索引,以便快速查找匹配查询的文档。最后,搜索过程是基于查询对象进行的,用户输入查询字符串,Lucene 返回相关的文档列表。 在给定的实例中,有两个主要的类:一个...

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

    《Lucene 3.0 原理与代码分析完整版》是一本深入解析Lucene 3.0搜索引擎库的专业书籍。Lucene是Apache软件基金会的开源项目,它为Java开发者提供了一个高性能、全文检索的工具包,广泛应用于各种信息检索系统。这...

    lucene3.0核心jar包

    在 Lucene 3.0 中,索引过程包括分词、字段处理、文档ID分配等步骤,生成的索引文件包括词典、Posting List、Doc IDs 等组件。 2. **分词器(Analyzer)**:Lucene 提供了多种分词器,如 StandardAnalyzer、...

    lucene 3.0 API 中文帮助文档 chm

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

    Lucene3.0 使 用 教 程

    【Lucene3.0 使用教程】是针对Java开发者的一个指南,旨在教授如何利用Apache Lucene 3.0.1版本实现全文检索功能。Lucene是一个高性能、可伸缩的开源全文检索库,它提供了文本分析、索引创建、文档检索等核心功能。...

    lucene3.0资料包

    在Lucene3.0中,索引是数据检索的基础。它通过将文本数据转换为倒排索引来实现快速查询。倒排索引将每个文档中的词项映射到包含这些词项的文档列表,使得搜索时可以迅速找到相关文档。在这一版本中,索引构建过程...

    lucene3.0-api.CHM

    《Lucene 3.0 API CHM指南》 Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发,广泛应用于各种搜索引擎和信息检索系统。本指南主要关注的是Lucene 3.0版本的API,这是一个强大的工具集,用于在Java环境...

    Lucene3.0全文信息检索

    **Lucene 3.0 全文信息检索** Lucene 是一个由Apache软件基金会4 Jakarta项目组开发的开源全文检索引擎工具包。自1999年发布以来,Lucene 已经发展成为Java世界中最为广泛使用的全文检索库,为开发者提供了构建高...

    Lucene3.0做的文件搜索

    在Lucene 3.0版本中,这个功能得到了进一步加强,支持了多种文件格式的搜索,使得用户可以对各种类型的文档进行快速而准确的检索。 **1. Lucene索引原理** Lucene的核心在于它的索引机制。索引过程主要包括文档...

    lucene 2.0 api以及lucene 3.0 api

    **Lucene 2.0 API 和 Lucene 3.0 API 深度解析** Lucene 是一个由 Apache 软件基金会开发的全文搜索引擎库,它为开发者提供了在 Java 应用程序中实现高性能、可扩展的全文搜索功能的能力。Lucene 的 API 设计得相当...

Global site tag (gtag.js) - Google Analytics