Lucene 近实时搜索NRT(三)

 在近实时搜索NRT(二)的文章中我们提到,Lucene提供了四种方法来获得StandardDirectoryReader对象,这里先简单总结下这四种open方法获取StandardDirectoryReader的差异:

  • 方法一:DirectoryReader.open(final Directory directory)

    • 根据索引目录Directory中N值最大的segment_N文件(即最近的一次commit)获取已经提交的索引信息,未commit的文档的索引信息无法被读取,即使已经flush但未提交的文档的索引信息也无法被读取,故这种获取StandardDirectoryReader的方法不属于NRT
  • 方法二:DirectoryReader.open(final IndexCommit indexCommit)

    • 我们如果使用封装了索引删除策略NoDeletionPolicy的SnapshotDeletionPolicy,我们可以记录每一次的提交,即IndexCommit(见近实时搜索NRT(一)),在索引目录中会生成多个segment_N文件,使用此方法可以获得任意一次提交的索引信息,可以用来回溯操作,故这种获取StandardDirectoryReader的方法不属于NRT
  • 方法三:DirectoryReader.open(final IndexWriter indexWriter)

    • 该方法实际调用了方法四,区别在于另方法四中的两个参数applyAllDeletes为true、writeAllDeletes为false
  • 方法四:DirectoryReader.open(final IndexWriter indexWriter, boolean applyAllDeletes, boolean writeAllDeletes)

    • 由于在生成IndexWriter对象阶段会先读取索引目录中已有的索引信息(旧的索引信息),并且更改索引(新的索引信息)需要通过IndexWriter对象,故通过IndexWriter对象能获得索引目录中所有的索引信息,故方法三跟方法四获取StandardDirectoryReader的方法属于NRT

 

看这里:https://www.amazingkoala.com.cn/Lucene/Index/2019/0920/95.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值