`
Rocky_rup
  • 浏览: 143461 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Lucene索引文件解析之“项”

阅读更多


接上文Lucene索引文件解析之

 

关于项(Term)

 

.tis文件里记录的是经过分析器(analyser)分析之后的字典。还是来看文件内容:

 

.tis 写道

FF FF FF FE  00 00 00 00 00 00 00 07 00 00 00 80 ?..........€
00 00 00 10 00 05 63 6F 64 65 72 00 01 00 00 00 ......coder.....
06 65 78 70 65 72 74 00 01 01 01 00 03 69 27 6D .expert......i'm
00 01 01 01 00 06 6C 75 63 65 6E 65 00 02 01 01 ......lucene....
00 03 6E 65 77 00 01 02 02 00 05 61 6C 6C 65 6E ..new......allen
01 01 01 01 00 05 72 6F 63 6B 79 01 01 01 01       ......rocky....

 

1.  FF FF FF FE tis文件的版本;

2.  00 00 00 00 00 00 00 07 字典中记录的项的个数;

3.  00 00 00 80 IndexInterval ,这个参数是配合tii文件一起,加快查询之用,之后会详细介绍

4.  00 00 00 10 SkipInterval 用于加速TermDocs.skipTo(int)的,之后会详细介绍


5.  剩下的部分就是一个个项的信息:

1.  00 前缀长度,特指当前和它之前的公用的前缀部分的长度;举个例子,有两个相邻的项分别是“bone”“boy”,那么“boy”“bone”公用的前缀是“bo”,则前缀长度就是2;若没有公用的,或者项是第一个,那么前缀长度也就是0;这样做的目的是为了节省存储空间;

2.  05 的文本长度;

3.  63 6F 64 65 72 的文本内容"coder";

4.  00 所属的序号;

5.  01 在文档中出现的次数;

6.  00 .frq文件中位置的偏移量,这个字节定位项所在文档的关键

7.  00 .prx文件中位置的偏移量;

8.  00 SkipData.frq文件中位置

9.  此后依此类推。

.tis文件的格式为<文件版本><项数量>< IndexInterval><SkipInterval>[<公用前缀长度><项文本长度><项文本内容><项所属域序号><文档中出现次数><frq中的偏移量><prx中的偏移量><SkipData在frq的位置>...]

 

.tii文件中记录了tis文件的索引,简而言之,在查询时是通过预载tii来加快对的检索。 

 

.tii 写道

 

FF FF FF FE 00 00 00 00  00 00 00 01 00 00 00 80   ?..........€

00 00 00 10 00 00 FF FF  FF FF 0F 00 00 00 14      ...........

 

 

tii和tis的非常类似,只是在项信息之后多了一个IndexDelta,也就上面的14,它表示在tis文件中第一个项信息的偏移量是20(十六进制的14的十进制是20)个字节。

 

上面FF FF  FF FF 0F 是很让人迷惑的,因为tii中第一个索引项是空的,相当于new Term("",""),它没有一个域与其匹配,Lucene默认用-1来填充,具体细节请参见TermInfosWriter类的源代码。

 

到现在可能对tis和tii的作用还是很模糊,解密的关键在于对IndexInterval的理解,下次我们将围绕它来展开讨论。

3
0
分享到:
评论
2 楼 lc_windson 2012-12-22  
楼主,关于这一块,我遇到了一个很困惑的问题,分析.tii文件的时候,发现第二个term的IndexDelta这个数据与实际term在.tis文件中的起始地址对不上,错位了一个单词,隐约觉得自己明白了点什么,但是还是没有透彻,想请教下楼主
1 楼 lemonweirui 2009-05-04  
期待博主后续的讲解。。

相关推荐

    毕设 Lucene解析索引PDF文档的内容

    iTextPDFExtractor.java ------ ...--PDFBox创建PDF文件的Lucene索引 PDFBoxPathIndex.java ------- --PDFBox创建指定目录PDF文档索引 POIOfficeExtractor.java ----- -- POI处理Excel和Word文档代码

    经典的lucene实例代码及详细解析以及lucene结构流程介绍

    本文并给出一个经典的lucene全文收索例子代码。该例子功能是从磁盘文档建立索引,搜索该文档中的哪个TXT文件包含所搜索内容。最后再大致介绍Lucene的结构模块,应用流程希望对网友能有帮助。

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

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

    lucene-sequence-diagram:lucene搜索端uml时序图,lucene源码解析

    lucene-sequence-diagram lucene搜索端uml时序图,lucene源码解析 图比较大,看不清,可以下载【sd-search.svg】后再用...1.1 对"lucene"这个term赋予权重,需要先从索引文件中读取"title"这个字段的倒排表信息,即图中

    Lucene 源码解析

    在创建完最重要的IndexWriter之后,就开始遍历需要索引的文件,构造对应的Document和Filed类,最终通过IndexWriter的addDocument函数开始索引。 Document的构造函数为空,StringField、TextField和Field的构造函数...

    lucene2.9.1所有最新开发包及源码及文档

    3. Lucene的索引文件逻辑结构 1) 索引(Index)由若干块(片段)(Segment)组成 ★2) 块由若干文档(Document)组成: 一个文件映射成一个文档。数据库表中的一条记录映射成一个文档。 ★3) 文档由若干域(Field)组成:...

    lucene2.9.1完整DEMO及开发文档

    //创建一个IndexWriter(存放索引文件的目录,分析器,Field的最大长度) iwriter = new IndexWriter(directory, analyzer,true, IndexWriter.MaxFieldLength.UNLIMITED); //iwriter.setUseCompoundFile(true);//...

    开发自己的搜索引擎lucene and heritrix

    使用PDFBox解析PDF文件 使用xpdf解析中文PDF文件 使用POI解析WORD和Excel文件 使用Jacob解析WORD文件 Google的Search API的使用 安装:直接在Eclipse中选取“import-&gt;Existing Project” Eclipse工程/ch9:原...

    lucene例子

    Lucene 是一个开源、高度可扩展的搜索引擎库,可以从 Apache Software Foundation 获取。您可以将 Lucene 用于商业和开源应用程序。...使用基于文件的锁定机制保护并发索引修改。 允许同时搜索和编制索引。

    基于JAVA的搜索引擎 lucene-2.2.0

    // IndexFileDeleter deleter是IndexWriter类的一个私有的成员变量,它在org.apache.lucene.index包里面,主要对删除索引文件进行实现和管理 deleter = new IndexFileDeleter(directory, deletionPolicy == null ...

    Heritrix lucene开发自己的搜索引擎(源码)1

    使用PDFBox解析PDF文件 使用xpdf解析中文PDF文件 使用POI解析WORD和Excel文件 使用Jacob解析WORD文件 Google的Search API的使用 安装:直接在Eclipse中选取“import-&gt;Existing Project” Eclipse工程/ch9:原...

    基于lucene的搜索引擎总结

    Lucene索引过程的核心类 IndexWriter :提供对索引的写入操作 Directory:描述了索引存放的位置 Analyzer:对文本进行分析,提取词汇(token),剔除无用的信息 Document:虚拟的文档 Field:每个Document包含一个或...

    信息检索Lucene课程设计

    信息检索中的课程设计,可以说是用lucene处理文档的一个模板,包括对doc,html,xml,xls,pdf等文件类型的解析与索引,压缩包不仅包含可运行的jar文件,而且有所有所需的lib包,不用再重新下载

    基于Lucene.Net 的桌面搜索源代码

    IndexFiles 建立文件索引源代码 Web 基于B/S的桌面搜索源代码 Lucene.Net 源搜索引擎源代码 使用说明: 一、在IIS上建立虚拟目录,指向web 二、Web\Data\Config.xml 配置索引目录 三、运行Web\Data\IndexFiles.exe...

    Heritrix lucene开发自己的搜索引擎(源码)3

    使用PDFBox解析PDF文件 使用xpdf解析中文PDF文件 使用POI解析WORD和Excel文件 使用Jacob解析WORD文件 Google的Search API的使用 安装:直接在Eclipse中选取“import-&gt;Existing Project” Eclipse工程/ch9:原...

    java-Email-indexer:快速电子邮件搜索和索引

    java-电子邮件索引器 快速电子邮件搜索和索引 我使用 Apache lucene 进行索引,并使用 libpst 来解析 ENRON 数据集。 它也有一种索引 txt 消息文件的方法

    lucene_search_engine_application

    信息检索系统,它解析文本和html文档,并在给定的搜索查询中检索前10个相关文档,该搜索查询分别包含诸如文件名,标题,等级和得分之类的参数。 程序流程 该功能已模块化并实现为以下逻辑块: 进行文件的预处理。...

    自己动手写搜索引擎(罗刚著).doc

    6.1.1 理解 Lucene 的索引库结构 146 6.1.2 设计一个简单的索引库 148 6.2 创建和维护索引库 149 6.2.1 创建索引库 149 6.2.2 向索引库中添加索引文档 149 6.2.3 删除索引库中的索引文档 151 6.2.4 更新索引库中的...

    一个未做完的网站(界面不太好看)

    用户的注册,登陆,密码的找回(将密码发入用户的邮箱,在邮箱中点击连接修改密码),用户的问题及答案存入XML文件(XML文件的写入及解析),及后台问题分类的添加及修改,搜索索引的建立(lucene框架索引的建立)等...

    SystemMonitorLogAnalyzer

    它有几个部分: 日志解析器1.1 CSV文件转excel文件的转换器1.2 文件解析器,逐行读取excel日志并将重要信息记录在单独的表格中索引器1.1 关键部分是Lucene,用于后续查询的索引关键字1.2 索引创建过程会打开每个...

Global site tag (gtag.js) - Google Analytics