中文(中国)更改
 
powered by
Hawk Search
Hawk Search

 
分类

 
文章

 
日历

三月 2010
« 四    
1234567
891011121314
15161718192021
22232425262728
293031  
 
 
Javen-Studio Thinking of Life, Imagination of Future.
NEWS

Annotated Lucene:第三节 索引文件结构(2)

3.2.2.2 Lock文件

写锁(write lock)文件名为“write.lock”,它缺省存储在索引目录中。如果锁目录(lock directory)与索引目录不一致,写锁将被命名为“XXXX-write.lock”,其中“XXXX”是一个唯一的前缀(unique prefix),来源于(derived from)索引目录的全路径(full path)。当这个写锁出现时,一个writer当前正在修改索引(添加或者清除文档)。这个写锁确保在一个时刻只有一个writer修改索引。

需要注意的是在2.1版本之前(prior to),Lucene还使用一个commit lock,这个锁在2.1版本里被删除了。

3.2.2.3 Deletable文件

在Lucene 2.1版本之前,有一个“deletable”文件,包含了那些需要被删除文档的详细资料。在2.1版本后,一个writer会动态地(dynamically)计算哪些文件需要删除,因此,没有文件被写入文件系统。

3.2.2.4 Compound文件(.cfs)

从Lucene 1.4版本开始,compound文件格式成为缺省信息。这是一个简单的容器(container)来服务所有下一章节(next section)描述的文件(除了.del文件),格式如下:

版本

包含的项

数目

类型

描述

1.4之后版本

FileCount

1

VInt

DataOffset

FileCount

Long

FileName

FileCount

String

FileData

FileCount

raw

Raw文件数据是上面命名的所有单个的文件数据(the individual named above)。

结构如下图所示:

从Lucene 2.3 版本开始,文档存储文件(存储fields和term vectors数据)能够让多个segment共享一个单独的文件集,当compound文件启用时,这些共享的文件将被添加进一个单独的compound文件,格式同上,但是文件扩展名为.cfx。

3.2.3 每个Segment包含的文件

剩下的文件(remaining files)都是per-segment(每个片断文件),因此(thus)都用后缀来定义(defined by suffix)。

3.2.3.1 Field信息(.fnm)

Field的名字都存储在Field信息文件中,后缀是.fnm。

文件

包含的项

数目

类型

版本

描述

FieldsInfo

(.fnm)

FieldsCount

1

VInt

FieldName

FieldsCount

String

FieldBits

FieldsCount

Byte

最低阶的bit位(low-order bit)值为1表示是被索引的Fields0表示非索引的Fields

第二个最低阶的bit位(second lowest-order bit)值为1表示该Fieldterm向量存储(term vectors stored),0表示该field没有term向量。

>=1.9

如果第三个最低阶的bit位(third lowest-order bit)设置(0×04),term的位置(term positions)将和term向量一起被存储(stored with term vectors)。

>=1.9

如果第四个最低阶的bit位(fourth lowest-order bit)设置(0×08),term的偏移(term offsets)将和term向量一起被存储(stored with term vectors)。

>=1.9

如果第五个最低阶的bit位(fifth lowest-order bit)设置(0×10),norms将对索引的field忽略掉(norms are omitted for the indexed field)。

>=1.9

如果第六个最低阶的bit位(sixth lowest-order bit)设置(0×20),payloads将为索引的field存储(payloads are stored for the indexed field)。

Fields将使用它们在这个文件中的顺序来编号(fields are numbered by their order in this file)。因此Field为0表示为该文件中的第一个field,1表示下一个field,一次类推。

需要注意的是,就像文档编号(document numbers)一样,field编号(field numbers)与片断是相关的(are segment relative)。
结构如下图所示:

发表评论