From 4e79e11007b6c9fc3d3965beefe33e1ffcf641d3 Mon Sep 17 00:00:00 2001 From: PSeitz Date: Thu, 21 Mar 2024 09:10:25 +0100 Subject: [PATCH] add collect_block to BoxableSegmentCollector (#2331) --- src/collector/multi_collector.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/collector/multi_collector.rs b/src/collector/multi_collector.rs index 4cbcadc244..da4d222a94 100644 --- a/src/collector/multi_collector.rs +++ b/src/collector/multi_collector.rs @@ -52,10 +52,16 @@ impl Collector for CollectorWrapper { impl SegmentCollector for Box { type Fruit = Box; + #[inline] fn collect(&mut self, doc: u32, score: Score) { self.as_mut().collect(doc, score); } + #[inline] + fn collect_block(&mut self, docs: &[DocId]) { + self.as_mut().collect_block(docs); + } + fn harvest(self) -> Box { BoxableSegmentCollector::harvest_from_box(self) } @@ -63,6 +69,11 @@ impl SegmentCollector for Box { pub trait BoxableSegmentCollector { fn collect(&mut self, doc: u32, score: Score); + fn collect_block(&mut self, docs: &[DocId]) { + for &doc in docs { + self.collect(doc, 0.0); + } + } fn harvest_from_box(self: Box) -> Box; } @@ -71,9 +82,14 @@ pub struct SegmentCollectorWrapper(TSegment impl BoxableSegmentCollector for SegmentCollectorWrapper { + #[inline] fn collect(&mut self, doc: u32, score: Score) { self.0.collect(doc, score); } + #[inline] + fn collect_block(&mut self, docs: &[DocId]) { + self.0.collect_block(docs); + } fn harvest_from_box(self: Box) -> Box { Box::new(self.0.harvest())