lucene4.7 索引文件(九)

下图是一个典型的Lucene4.x的索引结构图: web


Lucene4.x以后的全部索引格式以下所示: 
性能

文件名 后缀 描述
Segments File segments.gen, segments_N 存储段文件的提交点信息
Lock File write.lock 文件锁,保证任什么时候刻只有一个线程能够写入索引
Segment Info .si 存储每一个段文件的元数据信息
Compound File .cfs, .cfe 复合索引的文件,在系统上虚拟的一个文件,用于频繁的文件句柄
Fields .fnm 存储域文件的信息
Field Index .fdx 存储域数据的指针
Field Data .fdt 存储全部文档的字段信息
Term Dictionary .tim term字典,存储term信息
Term Index .tip term字典的索引文件
Frequencies .frq 词频文件,包含文档列表以及每个term和其词频
Positions .prx 位置信息,存储每一个term,在索引中的准确位置
Norms .nrm.cfs, .nrm.cfe 存储文档和域的编码长度以及加权因子
Per-Document Values .dv.cfs, .dv.cfe 编码除外的额外的打分因素,
Term Vector Index .tvx term向量索引,存储term在文档中的偏移距离
Term Vector Documents .tvd 包含每一个文档向量的信息
Term Vector Fields .tvf 存储filed级别的向量信息
Deleted Documents .del 存储索引删除文件的信息


复合索引文件是指,除了段信息文件,锁文件,以及删除的文件外,其余的一系列索引文件压缩一个后缀名为cfs的文件,意思,就是全部的索引文件会被存储成一个单例的Directory,而非复合索引是灵活的,能够单独的访问某几个索引文件,而复合索引文件则不能够,由于其压缩成了一个文件,因此在某些场景下可以获取更高的效率,好比说,查询频繁,而不常常更新的需求,就很适合这种索引格式。  

lucene索引的基本概念组成由,索引,文档,域和项组成,一个索引,一般包含一些序列的文档,一个文档包含一些序列的域,而一些域又包含一些序列的项,而一些项则包含一些列序列的最低层的字节,注意这里的序列指的是在索引结构中有序,一般有序的这种方式,某些状况能够优化索引结构。lucene使用了倒排索引(Inverted Indexing),来存储索引信息,大大提升了检索效率,倒排索引,举一个通俗的例子,原来基于人们的正常思惟,咱们会存储的是一个文章中出现了那几个单词,而倒排索引,却偏偏相反,它存储的是这个单词,包含在几个文档中,固然这个关系是由倒排链表(存储一系列docid)构成的索引,咱们在检索时,经过这个单词能够快速的定位,它出如今几篇文章中,从而大大提高了检索性能。固然lucene中不单单有倒排索引,也有正向的存储,而倒排之因此是lucene的核心,是由于它提高了检索性能,在检索到一个个具体的文档时,就须要咱们正向的拿出这些信息,反映在实际的代码中就是咱们经过检索获取一个个docid,而后经过一个个docid获取整个文档,而后咱们在正向的获取各个域,以及各个项存储的具体信息,固然前提是你存储了这个字段,若是你只是索引了,而并无存储,那么你只能检索到此条信息,但没法获取具体term的值,这个须要在建索引以前就要设计好,索引的存储结构,那些字段是检索的,那些字段是存储的等等,若是你还须要高亮一些内容,则还须要存储这个域的偏移的位置,经过这样就能准确的在文中标记检索命中的关键词,若是你打算在前台来完成这个高亮,就不要存储这些信息了。
相关文章
相关标签/搜索