lucene4.x收集器之CachingCollector

CachingCollector

        缓存结果的收集器的基类,从搜索中缓存所有文档,还可以缓存评分,然后可以将它们重放给其他的收集器。可指定类可使用的最大内存或最大缓存文档数,实际上设置最大可使用内存后,会根据是否缓存评分来计算最大缓存文档数。一旦收集完成,就会调用isCached方法。如果idCached返回true,就可以针对新的收集器使用replay(Collector),如果返回false,则意味着需要的内存太多,必须重新运行原始搜索。
        CachedScorer:内部类,用于保存评分和文档id。
        主要方法如下:
        create(final boolean acceptDocsOutOfOrder, boolean cacheScores, double maxRAMMB):创建一个不包含其他收集器的缓存收集器,acceptDocsOutOfOrder表示是否允许收集的文档无序。cacheScores表示是否缓存评分,maxRAMMB表示最大可用内存。
        create(Collector other, boolean cacheScores, double maxRAMMB):创建一个包含给定收集的缓存收集器,如果缓存的文档和评分使用的内存超过阈值,则会清空缓存。
        create(Collector other, boolean cacheScores, int maxDocsToCache):创建一个包含给定收集器的缓存收集器,maxDocsToCache表示最多可缓存的文档数。如果缓存的文档和评分数量超过域值,则会清空缓存。
        replayInit(Collector other) :由内部类调用,判断对于传入的收集器是否可以进行重放。如果传入的收集器不允许文档无序,而缓存收集器允许乱序,则不能重放。如果可以重放会将最后一个段的信息也添加到cachedSegs中。
        replay(Collector other):重放文档id和评分给指定的收集器,如果没有缓存评分,则只重放文档id。

ScoreCachingCollector

        CachingCollector的静态私有内部子类,缓存评分的收集器。
        collect(int doc) :判断缓存数组是否为null,为null则不再缓存,否则判断当前的数组是否已满,如果已满计算新数组的大小判断是否可分配新数组(如果不能创建新数组,则将数组置为null,清空之前的缓存,否则创建新的数组),如果当前的数组未满,则直接将文档id和分数添加到数组。
        replay(Collector other):从缓存中取出缓存的文档id和评分,传递给传入的收集器。

NoScoreCachingCollector

        CachingCollector的静态私有内部子类,不缓存评分的收集器。
        collect(int doc) :与ScoreCachingCollector的collect(int doc)方法类似,只是不缓存评分。
        replay(Collector other):从缓存中取出缓存的文档id,传递给传入的收集器。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值