From 68fe406924f2a1349bc55804ebdbcb300b4a5ead Mon Sep 17 00:00:00 2001 From: Paul Masurel Date: Thu, 16 Jul 2020 12:24:55 +0900 Subject: [PATCH] Removed asserts (#850) --- src/docset.rs | 1 + src/postings/mod.rs | 3 +++ src/query/exclude.rs | 2 +- src/query/intersection.rs | 10 ++++------ src/query/reqopt_scorer.rs | 2 +- src/query/union.rs | 5 ++++- 6 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/docset.rs b/src/docset.rs index 68d38681d..216eae7c8 100644 --- a/src/docset.rs +++ b/src/docset.rs @@ -38,6 +38,7 @@ pub trait DocSet { /// Calling `seek(TERMINATED)` is also legal and is the normal way to consume a DocSet. fn seek(&mut self, target: DocId) -> DocId { let mut doc = self.doc(); + debug_assert!(doc <= target); while doc < target { doc = self.advance(); } diff --git a/src/postings/mod.rs b/src/postings/mod.rs index 20ca73d44..d00965d4d 100644 --- a/src/postings/mod.rs +++ b/src/postings/mod.rs @@ -582,6 +582,9 @@ pub mod tests { ) { for target in targets { let mut postings_opt = postings_factory(); + if target < postings_opt.doc() { + continue; + } let mut postings_unopt = UnoptimizedDocSet::wrap(postings_factory()); let skip_result_opt = postings_opt.seek(target); let skip_result_unopt = postings_unopt.seek(target); diff --git a/src/query/exclude.rs b/src/query/exclude.rs index d27a1c3e2..a246fe279 100644 --- a/src/query/exclude.rs +++ b/src/query/exclude.rs @@ -121,7 +121,7 @@ mod tests { VecDocSet::from(vec![1, 2, 3, 10, 16, 24]), )) }, - vec![1, 2, 5, 8, 10, 15, 24], + vec![5, 8, 10, 15, 24], ); } diff --git a/src/query/intersection.rs b/src/query/intersection.rs index fa57b85f4..030ef8009 100644 --- a/src/query/intersection.rs +++ b/src/query/intersection.rs @@ -120,9 +120,9 @@ impl DocSet for Intersection DocSet for Intersection= target); doc } diff --git a/src/query/reqopt_scorer.rs b/src/query/reqopt_scorer.rs index 5eddb5f4d..3217f07e1 100644 --- a/src/query/reqopt_scorer.rs +++ b/src/query/reqopt_scorer.rs @@ -72,7 +72,7 @@ where let doc = self.doc(); let mut score_combiner = TScoreCombiner::default(); score_combiner.update(&mut self.req_scorer); - if self.opt_scorer.seek(doc) == doc { + if self.opt_scorer.doc() <= doc && self.opt_scorer.seek(doc) == doc { score_combiner.update(&mut self.opt_scorer); } let score = score_combiner.score(); diff --git a/src/query/union.rs b/src/query/union.rs index fed667b23..359528e54 100644 --- a/src/query/union.rs +++ b/src/query/union.rs @@ -183,7 +183,10 @@ where // advance all docsets to a doc >= to the target. #[cfg_attr(feature = "cargo-clippy", allow(clippy::clippy::collapsible_if))] unordered_drain_filter(&mut self.docsets, |docset| { - docset.seek(target) == TERMINATED + if docset.doc() < target { + docset.seek(target); + } + docset.doc() == TERMINATED }); // at this point all of the docsets