引用
.fdx .fdt
.fdt=>存储具有Store.YES属性的Field
.fdx=>存储Document在.fdt中的位置。
引用
.tii .tis
.tis=>存储分词后的词条(term)
.tii=>tis的索引文件,标记每个.tis文件中词条的位置。
引用
deletable 格式
lucene文档删除后不会立即删除。等待下一次合并索引活对索引进行优化时真正删除。
类似windows回收站。所有等待删除的内容都放在这个文件中。
引用
复合索引格式 .cfs
indexWriter.useCompoundFile .默认 true
表示是否使用复合索引格式来保存索引。
如果索引内容巨大,文件数量巨大,打开文件数量巨大极大的消耗系统资源。lucene提供单文件索引格式。
索引过程优化
引用
合并因子 mergeFactor
含义:
1。设为10。每次索引添加10个document,就会有一个新的segment在磁盘上建立
2。当第10个segment建立以后,它会被合并成为一个具有100个document的新segment
3。接下来,每100个document创建一个新的segment,当第999个文档被加入索引,磁盘已经有9个segment,其中每个都有100个document,而第901个到999个document此时正在内存中,还未被写入磁盘。
4。如果再向索引中加入一个document,前9个就会和第10个新创建的segment合并。成为一个具有1000个document的segment。
相对内存操作。IO比较费时。所以mergeFactor小一点。那么写磁盘的机会就多一些。
所以内存大的,可以把这个设置的大一些。减少了磁盘的写入,建索引的速度也快一些。
如果是批量的文档建立索引,可以选择较大的mergeFactor。如果是间断性的写入,每次间隔较长,并且一次写入的数量不多,可以选择较小的mergeFactor。
引用
maxMergeDocs
mergeFactor中文档数量一直在增加,如果不做限制,文件系统的文件数量会很大。所以需要做一些限制。
当mergeFactor为10。maxMergeDocs为2000。segment中文档数量为1000。由于受到maxMergeDocs限制。一个文档不超过2000。因此下一次合并发生在segment中有2000个文档时,而不是在10000。
在一个较大的maxMergeDocs适用应对大批量的文档索引建立。而增量式的索引则应使用较小的maxMergeDocs.
引用
minMergeDocs
索引保存到磁盘前,需要保存在内存中。minMergeDocs就是用来限制这个内存中的文档数量。
它的新名字。maxBufferedDocs.
更大的内存,更大的maxBufferedDocs。
小的设置,频繁的IO