lucene分析7

一个索引(Index)可以同时存在多个 segments_N(至于如何存在多个 segments_N,在描述完详细信息之后会举例说明),然而当我们要打开一个索引的时候,我们必须要选择一个来打开。Lucene 采取以下过程:
其 一 , 在 所 有 的 segments_N 中 选 择 N 最 大 的 一 个 。 基 本 逻 辑 参 照
SegmentInfos.getCurrentSegmentGeneration(File[] files) , 其 基 本 思 路 就 是 在 所 有 以
segments 开头,并且不是 segments.gen 的文件中,选择 N 最大的一个作为 genA。
其二,打开 segments.gen,其中保存了当前的 N 值。其格式如下,读出版本号(Version),
然后再读出两个 N,如果两者相等,则作为 genB。
IndexInput genInput =directory.openInput(IndexFileNames.SEGMENTS_GEN);//“segments.gen”
int version = genInput.readInt();//读出版本号
if (version == FORMAT_LOCKLESS) {//如果版本号正确
long gen0 = genInput.readLong();//读出第一个 N
long gen1 = genInput.readLong();//读出第二个 N
if (gen0 == gen1) {//如果两者相等则为 genB
genB = gen0;
}
}
其三,在上述得到的genA和genB中选择最大的那个作为当前的N,方才打开segments_N
文件。其基本逻辑如下:
if (genA > genB)
gen = genA;
else
gen = genB;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值