Lucene文件格式和索引过程分析

释放双眼,带上耳机,听听看~!

lucene文件格式分析

segment
每个segment代表lucene一个完整的索引段。通常一个索引中包含了多个segment。每个segment都有统一的前缀,前缀名由 Document的数量转成36进制后,在前面加“_”而构成的。通常一个完整索引中,有且只有一个没有后缀名的segment文件,它记录了当前索引中所有的segment的信息。
.fnm
此文件包含了Document中的所有field名称
.fdx和.fdt
是综合使用的两类文件,其中.fdt存储了设置了Store.YES属性的field 的数据。而.fdx是一个索引,存储Document在.fdt中的位置
.tii和.tis
.tis存储分词后的词条(term),而.tii就是它的索引文件,表明了每个.tis文件中词条的位置
deletable
作用相当于回收站,当文档在被删除后,会首先在deletable中保留一条记录,要真正删除时,才将索引移出
复合索引格式.cfs
在IndexWriter中有个属性useCompoundFile,默认为 true即默认采用复合索引格式保存索引的,其含义是是否用复合索引格式来保存索引。索引的内容可能非常大文件可能非常多,如各这样系统打开文件数量巨大将消耗系统大量资源。因此lucene提供能一种单一索引格式。 
Lucene索引及文件的相关含义:
Term:项。为分词后最小单位,具体和使用的分析器有关,Lucene内置为单字。
Field:域。相当于数据库表的字段。
Document:文档。域信息的集合。
Segment:段。一个完整定1索引。
文件名称:segments_N,N为36进制数。
说明:在一个索引目录中,至少存在一个Segments文件,但可索引活动的只会有一个:N值最大的。其他的Segments文件可能为临时文件,一般情况是索引修改进程没有完成。
文件名称 后缀名称 说明
segments_N 段,表示一个完整独立的索引;N为36进制数
segments .gen segments辅助文件,主要用来生成计数
SegmentName .fnm 域集合信息文件
SegmentName .fdt 域值信息文件
SegmentName .tis 项信息文件
SegmentName .tii 项信息索引文件
SegmentName .frq 项频数文件
SegmentName .prx 项位置信息文件
SegmentName. nrm 标准化因子文件
SegmentName .tvx 文档信息索引文件
SegmentName .tvd 文档信息文件
SegmentName.tvf 每个域项向量信息文件
备注 SegmentName为_N,N为36进制数
2.3 Lucene原始存储数据类型(Primitive Types)
类型名称 说明
Byte 8 byte
UInt32 32 byte四字节无符号整型,高位优先
UInt64 64byte八字节无符号整型,高位优先
VInt 可变长度整型。0-127单字节,128-16383两字节,类推
Chars UNICODE字符串
String 写入格式为:VInt,Chars,字符串长度加字符串
其实从上面的例子就可以看出建立索引就用到Document,IndexWriter,Field。
最简单的步骤就是:
首先分别new 一个Document,IndexWriter,Field
然后用Doument.add()方法加入Field,
其次用IndexWrtier.addDocument()方法加入Document。
最后调用一下IndexWriter.close()方法关闭输入索引,这一步非常的重要只有调用这个方法索引才会被写入索引的目录里,而这是被很多初学的人所忽略的。

 

索引过程分析

http://www.cnblogs.com/forfuture1978/archive/2010/02/02/1661439.html

给TA打赏
共{{data.count}}人
人已打赏
安全运维

OpenSSH-8.7p1离线升级修复安全漏洞

2021-10-23 10:13:25

安全运维

设计模式的设计原则

2021-12-12 17:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索