diff --git a/CHANGELOG.md b/CHANGELOG.md index 94053798d..de0a424ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ while doc != TERMINATED { ``` The change made it possible to greatly simplify a lot of the docset's code. - Misc internal optimization and introduction of the `Scorer::for_each_pruning` function. (@fulmicoton) +- Added an offset option to the Top(.*)Collectors. (@robyoung) Tantivy 0.12.0 diff --git a/src/collector/custom_score_top_collector.rs b/src/collector/custom_score_top_collector.rs index 0400eb80e..c0c345bf9 100644 --- a/src/collector/custom_score_top_collector.rs +++ b/src/collector/custom_score_top_collector.rs @@ -11,7 +11,7 @@ impl CustomScoreTopCollector where TScore: Clone + PartialOrd, { - pub fn new( + pub(crate) fn new( custom_scorer: TCustomScorer, collector: TopCollector, ) -> CustomScoreTopCollector { diff --git a/src/collector/top_score_collector.rs b/src/collector/top_score_collector.rs index f5145f407..1ed2c8c0c 100644 --- a/src/collector/top_score_collector.rs +++ b/src/collector/top_score_collector.rs @@ -544,10 +544,10 @@ mod tests { use crate::collector::Collector; use crate::query::{AllQuery, Query, QueryParser}; use crate::schema::{Field, Schema, FAST, STORED, TEXT}; - use crate::{DocAddress, DocId, SegmentReader}; use crate::Index; use crate::IndexWriter; use crate::Score; + use crate::{DocAddress, DocId, SegmentReader}; fn make_index() -> Index { let mut schema_builder = Schema::builder(); @@ -599,12 +599,7 @@ mod tests { .searcher() .search(&text_query, &TopDocs::with_limit(4).and_offset(2)) .unwrap(); - assert_eq!( - score_docs, - vec![ - (0.48527452, DocAddress(0, 0)) - ] - ); + assert_eq!(score_docs, vec![(0.48527452, DocAddress(0, 0))]); } #[test] @@ -768,11 +763,9 @@ mod tests { let field = index.schema().get_field("text").unwrap(); let query_parser = QueryParser::for_index(&index, vec![field]); let text_query = query_parser.parse_query("droopy tax").unwrap(); - let collector = TopDocs::with_limit(2).and_offset(1).tweak_score(move |_segment_reader: &SegmentReader| { - move |doc: DocId, _original_score: Score| { - doc - } - }); + let collector = TopDocs::with_limit(2).and_offset(1).tweak_score( + move |_segment_reader: &SegmentReader| move |doc: DocId, _original_score: Score| doc, + ); let score_docs: Vec<(u32, DocAddress)> = index .reader() .unwrap() @@ -782,10 +775,7 @@ mod tests { assert_eq!( score_docs, - vec![ - (1, DocAddress(0, 1)), - (0, DocAddress(0, 0)), - ] + vec![(1, DocAddress(0, 1)), (0, DocAddress(0, 0)),] ); } @@ -795,11 +785,9 @@ mod tests { let field = index.schema().get_field("text").unwrap(); let query_parser = QueryParser::for_index(&index, vec![field]); let text_query = query_parser.parse_query("droopy tax").unwrap(); - let collector = TopDocs::with_limit(2).and_offset(1).custom_score(move |_segment_reader: &SegmentReader| { - move |doc: DocId| { - doc - } - }); + let collector = TopDocs::with_limit(2) + .and_offset(1) + .custom_score(move |_segment_reader: &SegmentReader| move |doc: DocId| doc); let score_docs: Vec<(u32, DocAddress)> = index .reader() .unwrap() @@ -809,10 +797,7 @@ mod tests { assert_eq!( score_docs, - vec![ - (1, DocAddress(0, 1)), - (0, DocAddress(0, 0)), - ] + vec![(1, DocAddress(0, 1)), (0, DocAddress(0, 0)),] ); } diff --git a/src/query/union.rs b/src/query/union.rs index ddaa1ba3d..6ca9267ae 100644 --- a/src/query/union.rs +++ b/src/query/union.rs @@ -225,7 +225,11 @@ where } fn size_hint(&self) -> u32 { - self.docsets.iter().map(|docset| docset.size_hint()).max().unwrap_or(0u32) + self.docsets + .iter() + .map(|docset| docset.size_hint()) + .max() + .unwrap_or(0u32) } }