Lucene开源搜索引擎的索引目录结构

Lucene索引结构可以分为索引、索引段、索引文档、索引域和索引项几个不同层次。lucene每个索引的结构由一个或者多个段组成,每个段包含一个或多个文档,每个文档管理了一个或者多个域,每个域由一个或多个索引项组成,每个索引项是一个索引数据

index->segment->document->field->term

在使用过程中,有两种结构可供选择,一种是多文件索引结构,一种是复合索引结构。下面分别描述一下两种索引文件的作用。
一、多文件索引结构
使用一系列索引文件分别存储索引,分散管理数据的索引存储格式。
----------//todo 显示多文件索引列表
IndexWriter textIndex = new IndexWriter(Dest_Index_Path,TextAnalyzer,true);
textIndex.useCompoundFile(true);//默认值是true
1)segments_*文件描述一组索引的参数,使用文件头固定格式描述后面的内容,包括每个独立新建索引的大小、属性等
2)fnm文件是索引域描述文件,一个独立的索引(perIndex)叫做一个索引段(Segment),一个fnm文件描述了本索引的文件数、各个域的属性编号
3)fdx文件是文档域值索引文件,采用定长方式存储,根据docid排序可直接定位,用来记录每个文档的stored fields值的存储位置(文件偏移)
4)tis文件是存储每个term在文档中的分布信息,如文档每个含term文件出现次数记录的偏移和位置记录的偏移排列顺序。先按Field名字字典排序,再每个Field按Term字典排序
5)tii文件 是tis文件的索引和精简,排列格式是一样的,但不含有每个term属性的信息。这个文件完全可以读入内存。
6)frq文件是tis文件的扩展。记录每个term在每个包含文档中的具体出现的频率
7)prx文件也是tis文件 的延伸,记录每个term在每个文档偏移信息。这个文件省略了docid,必须配合frq文件使用
8)tvx,tvd,tvf用来索引和保持每个文档的向量化字段的信息

二、复合索引结构
是把索引相关的一系列数据结构组织到少数几个文件中进行管理的索引存储模式。
1)segments_*文件描述一组索引的参数,使用文件头固定格式描述后面的内容,包括每个独立新建索引的大小、属性
2)segment.gen文件存储索引创建参数
3)cfs文件存储实际的索引数据段,不同子索引在内部按照一定格式存储,仍然可以区分,直到索引优化压缩操作发生时。

复合索引可以和多文件索引综合使用,每一个独立的字索引或者索引段使用当时设定的索引模式。在后续的优化压缩时,仍然可以处理。

猜你喜欢

转载自banditjava.iteye.com/blog/245286