lucene学习资料(索引文件格式详解)
本文介绍lucene中segment,.fnm,.fdx,.fdt,.tii,.tis,deletable ,.cfs等格式文件的用途。
每个segment代表lucene的一个完整索引段。通常,在一个索引中,会包含有多个segment。每个segment都有一个统一的前缀,这个前缀是根据当前索引的document数量而确立的。前缀名是Document数量转为36进制后,在前面加上下划线“_”而构成的。
通常,在一个完整的索引中,有且只有一个“segments”文件,这个文件没有后缀,它记录了当前索引中所有segment的信息。
.fnm格式的文件包含了Document中的所有Field名称。可以清楚地看到,所有加入的Field名称都在其中进行了保存。
.fdx和.fdt是综合使用的两类文件,其中.fdt类型文件用于存储具有Store.YES属性的Field数据。而.fdx类型文件则是一个索引,用于存储Document在下面代码就是创建索引的代码。
.tis文件用于存储分词后的词条(Term),而.tii就是它的所有文件,它标明了每个.tis文件中词条的位置.
在Lucene的索引中,所有的文档被删除后并不是立刻从索引中去除,而是留待下次合并索引或对索引进行优化时菜真正删除,这有点类似windows的回收站原理。这种功能是通过deletable文件实现的。所有的文档在被删除后,会首先在deletable文件中留一个记录,要真正删除时,才将索引除去。
在IndexWriter中有一个属性:useCompoundFile,它的默认值为True,这个属性的含义是:是否使用复合索引格式保存索引。索引的内容可能非常大,文件数量可能非常的多,如果遇到这种情况,系统打开文件的数量巨大将会极大地耗费系统资源。因此,Lucene提供了一个单文件索引格式,也就是所谓的复合索引格式。
使用复合索引格式存储Document内容时,只需要在初始化完成一个IndexWriter对象后,使用SetUseCompoundFile(boolean)方法,将UserCompoundFile的属性值设置为True就可以了。