Index File Formats
本文描述的是在lucene2.9中使用的索引文件格式。如果你使用的另外一个版本的lucene,那么请参考相应版本的 docs/fileformat.html 这个文件。
Apache Lucene 是由java写的,但lucene也有其他语言的实现版本。 如果其他语言的实现版本要和Apache lucene保持兼容性的话,那么lucene的索引格式就应该是与具体的语言实现无关。本文志在从与实现语言无关的角度来描述Apache lucene的索引格式。
随着Lucene的版本的更新,本文也会随之更新。不同语言的Lucene的实现,应该要在索引格式上达成一致。本文会提到兼容性的问题,描述了怎样从老版本的索引格式升级到新版的索引格式。
在版本2.1中,索引文件格式有一个重要的变化,它不再需要 提交锁了。(在2.1版本以前,提交的时候会生成一个文件,叫做锁文件)。这种改变是向前兼容的,使用2.1及之后的版本,我们可以打开2.1之前的版本的索引。当新的segments文件被保存的时候(也就是提交操作),新的segments会使用新的索引格式(这就意味着,不需要特别的升级--从2.1之前升级到2.1)。但是要注意的是,一旦一个提交操作发生,那么2.1之前的lucene版本就无法读取新的索引了。
在版本2.3以后,新的索引格式允许不同的segments之前可以共享同一个doc store (vector 和 stored field)文件。这能使索引在某些情况下性能更好。这个特性也是向前兼容的。
Definitions
The fundamental concepts in Lucene are index, document, field and term.
Lucene中最基本的概念是index,document,field 和term。
一个index由一系列的document组成。
一个document有一系列的field组成。
一个field由一系列的term组成。
一个term就是一个string。
在不同field种的相同的string是要被当成不同的term的。terms其实由一对string组成,第一个string是field的name,第二个string是真正的词条。
Inverted Indexing
索引存储的是关于词条的信息,这样能使基于词条的搜索更有效。Lucene使用的是倒排索引。这样的索引存储的是包含某个词条的的文档集合。说是倒排索引,是相对于正常的情况来说的,在正常的情况下,是文档包含词条。
Types of Fields
lucene也提供存储的功能,field的原始值可以被存起来,被存储起来的field称为stored。被索引起来的field被称为indexed。一个field既可以是stored也可以是indexed。field的文本既可以经过切词之后被索引,也可以整个文本当成一个词条被索引。大多数的field是要切词的,不过有些时候我们需要将整个文本当成词条索引起来。 具体的关于field的情况可以参考这里 Field 。
Segments
Lucene的索引可以由多个子索引或者说是segment组成。每一个segment都是完全独立的索引,都是可以被单独搜索的。索引产生的方法主要有两种:
-
为新的文档创建新的segment。
-
合并已经存在的segment而产生的segment。
一个搜索有可能涉及到多个索引,一个索引可以是由多个segment组成。
Document Numbers
lucene会为每一个document安排一个document number(文档序号)。第一个文档序号是0,之后的文档序号都要比之前的文档序号大。
document number 是会变的。如果一般不要轻易在lucene外部使用document number。一般来说,document number在下面的一些情况中会变化。
-
首先需要知道的是,document number只是在segment内部是唯一的。如果同时使用几个segment的时候,局部的的document number需要被转化成为全局的唯一的document number。一个很简单的做法是这样的,给每个segment指定一个基值,在基于这些基值将局部的document number转换成全局的。
-
当文档被删除的时候 ,document number 就不连续了,也就是document number之间有了空隙。这些空隙会在下次合并操作的时候被消除,要删除的文档也是在合并的时候真正被删除的。由此来看,我们可以知道,刚合并完的segment应该是没有空隙的。
概述
下面 列出的是每个segment都会包含的文件:
-
Field names. 这个文件包含了索引中使用到的field的名称
-
Stored Field values. 这个文件是一个attribute-value的集合,attribute 指的是field name。这个文件用来存储document的信息的,比如说它的标题、url、或者访问数据库时要用到的数据库。这个文件里面存的就是搜索结果出来的时候要返回的东西。它们可以根据document number进行查找。
-
一个词条的集合,包含了索引中所有的词条。Term dictionary中,除了词条信息,也有存储了包含该词条的文档的编号以及该词条在词频文件和term proximity文件中的位置。
-
Term Frequency data. For each term in the dictionary, the numbers of all the documents that contain that term, and the frequency of the term in that document if omitTf is false.
-
Term Proximity data. For each term in the dictionary, the positions that the term occurs in each document. Note that this will not exist if all fields in all documents set omitTf to true.
-
Normalization factors. For each field in each document, a value is stored that is multiplied into the score for hits on that field.
-
Term Vectors. For each field in each document, the term vector (sometimes called document vector) may be stored. A term vector consists of term text and term frequency. To add Term Vectors to your index see the Field constructors
-
Deleted documents. An optional file indicating which documents are deleted.
Details on each of these are provided in subsequent sections.
分享到:
相关推荐
以下是对Lucene索引文件格式的详细说明。 首先,我们要理解Lucene索引的基本结构。一个Lucene索引位于一个文件夹中,这个文件夹包含了多个段(Segment)。每个段是独立的,包含了一组文档,并且可以与其他段合并。...
**Lucene索引器实例详解** Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发,被广泛应用于各种搜索引擎的构建。它提供了一个高级的、灵活的、可扩展的接口,使得开发者能够轻松地在应用程序中实现全文...
在使用 Lucene 进行信息检索时,有时我们需要对建立的索引进行查看、调试或分析,这时就需要借助 Lucene 的索引查看工具。 Luke 是一个非常实用的 Lucene 索引浏览器,全称为 Lucidworks Luke。它允许用户以图形化...
《深入理解Lucene索引查看程序与代码》 在信息技术领域,搜索引擎的高效运作离不开底层索引技术的支持,而Lucene作为Apache软件基金会的一个开放源代码项目,正是一个强大的全文检索库,它提供了高效的文本搜索功能...
这就是"Lucene 索引 查看 工具"的用途,它可以帮助我们分析和理解 Lucene 索引的工作原理。 主要知识点: 1. **Lucene 索引**:Lucene 的索引是一种倒排索引,它将文档中的词项(tokens)映射到包含这些词项的文档...
以下是对Lucene索引机制的详细解析: 一、Lucene的索引过程 1. 文档分析:当向Lucene添加文档时,首先会经过一个分词器(Tokenizer),将文本拆分成一系列的词项(Token)。接着,这些词项会被过滤(Filter)和...
**Lucene索引和查询** Lucene是Apache软件基金会的开放源码全文搜索引擎库,它提供了文本检索的核心工具,使得开发者能够快速构建自己的搜索应用。本项目中的代码旨在展示如何利用Lucene对多个文件夹下的数据进行...
lukeall-0.9.jar为Lucene索引查看工具,方便大家查看索引
`Luck`,全称`Luke`,是一款强大的Lucene索引浏览器和分析器工具,可以帮助开发者、数据分析师以及对Lucene感兴趣的人员查看、理解和调试Lucene索引。 `Luke 7.4.0`是这款工具的一个特定版本,它专门设计用来与...
《Lucene索引文件格式详解》 Lucene,作为一款强大的全文搜索引擎库,其索引文件格式是实现高效搜索的关键。本文将深入解析Lucene 1.3版本的索引文件结构,帮助读者理解其内部运作机制。 首先,我们要理解Lucene...
以上就是关于“Lucene索引的简单使用”的详细介绍,包括其核心概念、创建和查询索引的步骤以及一些高级特性。希望对你理解和应用Lucene有所帮助。在实际开发中,可以根据需求选择合适的Analyzer,优化索引策略,以...
《深入理解Lucene索引文件查看工具LukeAll 4.7.1》 在信息检索领域,Lucene作为一款强大的全文搜索引擎库,被广泛应用在各种数据检索系统中。然而,对于开发者来说,理解并调试Lucene创建的索引文件并非易事。此时...
《深入理解Luke:洞察Lucene索引文件》 在信息技术领域,搜索引擎的高效运作离不开对数据的快速检索,而Lucene作为开源全文检索库,扮演了核心角色。在这个过程中,Luke工具提供了一种直观的方式,让我们能够查看和...
**Lucene索引结构原理** Lucene是Apache软件基金会的开放源代码全文搜索引擎库,它为Java开发人员提供了强大的文本搜索功能。理解Lucene的索引结构原理对于优化搜索性能和设计高效的搜索应用至关重要。 首先,我们...
**Lucene索引的基本操作** Lucene是一款由Apache软件基金会开发的全文检索库,它提供了高效、可扩展的全文检索功能。在Java开发环境中,Lucene是广泛使用的文本搜索工具,能够帮助开发者构建复杂的搜索引擎。本文将...
一个Lucene索引是由多个文件组成的,包括但不限于 segments文件、.del文件(删除文档标记)、.tii和.tis文件(Term Info Index和Term Info postings)、.frx、.fdx、.fdt、.fdt(Field Data)等。这些文件共同构成了...
《Lucene索引小示例解析》 Lucene是一个高性能、全文检索库,它由Apache软件基金会开发并维护。在Java编程环境中,Lucene被广泛应用于构建搜索功能,特别是对于大量文本数据的高效检索。本篇文章将通过一个简单的小...
而在Lucene中,基本单位是Document,它同样由多个字段组成,但Lucene索引的是这些字段的内容,以加速文本检索。 - **索引构建**:Lucene支持增量索引和批量索引,可以处理数据源的小幅变化或大规模数据。数据库通常...
这款已经老了,2.4以后的lucene索引用不了。我上传了最新版本的,有需要的话!请到http://download.csdn.net/source/1423241 下。一款可以查看Lucene分词后在索引的排名以及是否有无该词,很多时候用于查看有无需要...
本文将详细介绍一款被称为“很好的lucene索引查看工具”的实用软件,旨在帮助用户更好地理解和调试Lucene索引。 Lucene索引查看工具是一款专为Lucene设计的可视化工具,它允许用户直观地浏览和分析由Lucene创建的...