接上文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的理解,下次我们将围绕它来展开讨论。
分享到:
相关推荐
阅读和解析Lucene索引文件通常需要借助于Lucene提供的API。首先,通过`Directory`接口打开索引目录,如`FSDirectory.open()`方法,指定索引文件所在的路径。然后,创建`IndexReader`实例,它提供了访问索引文档的...
《深入理解Luke:洞察Lucene索引文件》 在信息技术领域,搜索引擎的高效运作离不开对数据的快速检索,而Lucene作为开源全文检索库,扮演了核心角色。在这个过程中,Luke工具提供了一种直观的方式,让我们能够查看和...
4. **术语浏览器**:这是 Luke 最强大的功能之一,可以查看倒排索引中的所有术语及其频率,帮助理解搜索是如何工作的。 5. **文档分析器**:可以实时分析输入文本,展示 Lucene 如何对其进行分词和处理。 在深入...
《Lucene索引文件格式详解》 Lucene,作为一款强大的全文搜索引擎库,其索引文件格式是实现高效搜索的关键。本文将深入解析Lucene 1.3版本的索引文件结构,帮助读者理解其内部运作机制。 首先,我们要理解Lucene...
iTextPDFExtractor.java ------ ...--PDFBox创建PDF文件的Lucene索引 PDFBoxPathIndex.java ------- --PDFBox创建指定目录PDF文档索引 POIOfficeExtractor.java ----- -- POI处理Excel和Word文档代码
**Lucene索引和查询** Lucene是Apache软件基金会的开放源码全文搜索引擎库,它提供了文本检索的核心工具,使得开发者能够快速构建自己的搜索应用。本项目中的代码旨在展示如何利用Lucene对多个文件夹下的数据进行...
以上就是关于“Lucene索引的简单使用”的详细介绍,包括其核心概念、创建和查询索引的步骤以及一些高级特性。希望对你理解和应用Lucene有所帮助。在实际开发中,可以根据需求选择合适的Analyzer,优化索引策略,以...
- `lukeall-0.8.1.jar`:Luke是一个用于查看和分析Lucene索引的工具,可以帮助开发者调试和理解索引结构。 - `log4j-1.2.12.jar`:日志框架,用于记录程序运行时的信息。 - `commons-httpclient-3.1.jar`:可能是...
在以上代码中,`textFiles` 是包含待索引文件的 File 对象数组。`StandardAnalyzer` 是 Lucene 提供的分析器,用于分词和其他文本预处理。`IndexWriter` 用于向索引目录添加文档,并负责管理索引的更新和优化。 总...
### Lucene对XML文档建立索引的技术解析与实践 #### 一、引言 随着互联网技术的迅猛发展,非结构化数据(如XML文档)在企业和组织中的应用日益广泛。如何高效地处理这些非结构化的数据,特别是进行快速检索成为了一...
索引文件是Lucene索引的物理存储单元,词典是词项的集合,倒排索引是词项到文档的映射关系。 在Lucene中,索引文件是以目录形式存储的,每个索引文件对应一个文档集合。词典是Lucene索引的核心组件,它存储了所有的...
在索引过程中,Lucene会对输入的文本进行分词,创建一个词项到文档位置的映射。当进行查询时,系统会快速定位到包含查询词的文档,而不是像关系型数据库那样遍历所有记录进行匹配。这种方式特别适合处理大规模数据和...
Lucene将文档分解为词项(tokens),并对每个词项创建倒排索引。倒排索引是一种数据结构,它允许快速查找包含特定词项的所有文档。这种高效的数据结构是Lucene快速搜索的基础。 当我们面临大量数据需要索引时,单...
搜索时,用户输入的查询会被转换成词项列表,然后Lucene会查找这些词项在索引中的对应信息,通过评分算法确定相关性,最终返回最相关的文档。 在实现过程中,需要关注的关键步骤包括: - 文档解析:将非结构化的...
为了运行 Lucene 示例,首先需要在 Eclipse 中导入这些设置,创建一个 Java 项目,并将 Lucene 相关库(如 `libs` 目录中的 jar 文件)添加到项目的类路径中。 2. **创建索引** - 在 Lucene 中,创建索引是搜索的...
2. **设置目标索引目录**:定义存放生成索引文件的路径。 3. **初始化`IndexWriter`对象**:用于控制索引的创建或更新。 4. **遍历并添加文档**:逐个读取源目录中的文本文件,并将其添加到索引中。 5. **关闭`...
2. **打开索引**:选择要查看的Lucene索引目录,Luke会自动加载并解析索引结构。 3. **浏览索引**:在界面左侧选择要查看的字段,右侧则会显示字段的详细信息。 4. **搜索测试**:在搜索框输入查询,点击“Execute...
- `lukeall-4.0.0-ALPHA.jar`:这是 LukeAll 4.0.0-ALPHA 版本的可执行 JAR 文件,用于查看和操作基于 Lucene 4.0.0-ALPHA 创建的索引。 - `lukeall-3.5.0.jar`:对应于 Lucene 3.5.0 版本的 LukeAll,用于处理基于...
`索引.ppt`这样的文件可能是对Lucene索引原理的详细讲解,可能包含了PPT演示,涵盖了上述概念并可能提供了实例代码和案例分析。 总之,Lucene是一个强大的全文检索工具,它的索引机制是实现高效搜索的关键。通过...
描述中的“lucene.net 索引文件图形界面管理器”可能是指 NLuke,这是一个基于 .NET 的 Lucene 索引浏览器。NLuke 提供了可视化的界面,用户可以查看索引的详细信息,包括字段、分词、文档记录等。此外,NLuke 还...