diff --git a/crates/milli/src/search/new/exact_attribute.rs b/crates/milli/src/search/new/exact_attribute.rs index 269879ad6..4435be8d0 100644 --- a/crates/milli/src/search/new/exact_attribute.rs +++ b/crates/milli/src/search/new/exact_attribute.rs @@ -6,7 +6,7 @@ use super::ranking_rules::{RankingRule, RankingRuleOutput}; use crate::score_details::{self, ScoreDetails}; use crate::search::new::query_graph::QueryNodeData; use crate::search::new::query_term::ExactTerm; -use crate::{CboRoaringBitmapCodec, Result, SearchContext, SearchLogger}; +use crate::{CboRoaringBitmapCodec, Result, SearchContext, SearchLogger, TimeBudget}; /// A ranking rule that produces 3 disjoint buckets: /// @@ -35,6 +35,7 @@ impl<'ctx> RankingRule<'ctx, QueryGraph> for ExactAttribute { _logger: &mut dyn SearchLogger, universe: &roaring::RoaringBitmap, query: &QueryGraph, + _time_budget: &TimeBudget, ) -> Result<()> { self.state = State::start_iteration(ctx, universe, query)?; Ok(()) @@ -46,6 +47,7 @@ impl<'ctx> RankingRule<'ctx, QueryGraph> for ExactAttribute { _ctx: &mut SearchContext<'ctx>, _logger: &mut dyn SearchLogger, universe: &roaring::RoaringBitmap, + _time_budget: &TimeBudget, ) -> Result>> { let state = std::mem::take(&mut self.state); let (state, output) = State::next(state, universe); diff --git a/crates/milli/src/search/new/geo_sort.rs b/crates/milli/src/search/new/geo_sort.rs index 6c7d7b03b..b88badf07 100644 --- a/crates/milli/src/search/new/geo_sort.rs +++ b/crates/milli/src/search/new/geo_sort.rs @@ -7,7 +7,7 @@ use super::ranking_rules::{RankingRule, RankingRuleOutput, RankingRuleQueryTrait use crate::documents::geo_sort::{fill_cache, next_bucket}; use crate::documents::{GeoSortParameter, GeoSortStrategy}; use crate::score_details::{self, ScoreDetails}; -use crate::{GeoPoint, Result, SearchContext, SearchLogger}; +use crate::{GeoPoint, Result, SearchContext, SearchLogger, TimeBudget}; pub struct GeoSort { query: Option, @@ -84,6 +84,7 @@ impl<'ctx, Q: RankingRuleQueryTrait> RankingRule<'ctx, Q> for GeoSort { _logger: &mut dyn SearchLogger, universe: &RoaringBitmap, query: &Q, + _time_budget: &TimeBudget, ) -> Result<()> { assert!(self.query.is_none()); @@ -110,6 +111,7 @@ impl<'ctx, Q: RankingRuleQueryTrait> RankingRule<'ctx, Q> for GeoSort { ctx: &mut SearchContext<'ctx>, _logger: &mut dyn SearchLogger, universe: &RoaringBitmap, + _time_budget: &TimeBudget, ) -> Result>> { let query = self.query.as_ref().unwrap().clone(); diff --git a/crates/milli/src/search/new/graph_based_ranking_rule.rs b/crates/milli/src/search/new/graph_based_ranking_rule.rs index 67ac92e2c..f54fce8c3 100644 --- a/crates/milli/src/search/new/graph_based_ranking_rule.rs +++ b/crates/milli/src/search/new/graph_based_ranking_rule.rs @@ -53,7 +53,7 @@ use super::{QueryGraph, RankingRule, RankingRuleOutput, SearchContext}; use crate::score_details::Rank; use crate::search::new::query_term::LocatedQueryTermSubset; use crate::search::new::ranking_rule_graph::PathVisitor; -use crate::{Result, TermsMatchingStrategy}; +use crate::{Result, TermsMatchingStrategy, TimeBudget}; pub type Words = GraphBasedRankingRule; impl GraphBasedRankingRule { @@ -135,6 +135,7 @@ impl<'ctx, G: RankingRuleGraphTrait> RankingRule<'ctx, QueryGraph> for GraphBase _logger: &mut dyn SearchLogger, _universe: &RoaringBitmap, query_graph: &QueryGraph, + _time_budget: &TimeBudget, ) -> Result<()> { // the `next_max_cost` is the successor integer to the maximum cost of the paths in the graph. // @@ -217,6 +218,7 @@ impl<'ctx, G: RankingRuleGraphTrait> RankingRule<'ctx, QueryGraph> for GraphBase ctx: &mut SearchContext<'ctx>, logger: &mut dyn SearchLogger, universe: &RoaringBitmap, + _time_budget: &TimeBudget, ) -> Result>> { // Will crash if `next_bucket` is called before `start_iteration` or after `end_iteration`, // should never happen diff --git a/crates/milli/src/search/new/sort.rs b/crates/milli/src/search/new/sort.rs index cefa2c426..f1564d468 100644 --- a/crates/milli/src/search/new/sort.rs +++ b/crates/milli/src/search/new/sort.rs @@ -7,7 +7,7 @@ use crate::heed_codec::facet::{FacetGroupKeyCodec, OrderedF64Codec}; use crate::heed_codec::{BytesRefCodec, StrRefCodec}; use crate::score_details::{self, ScoreDetails}; use crate::search::facet::{ascending_facet_sort, descending_facet_sort}; -use crate::{FieldId, Index, Result}; +use crate::{FieldId, Index, Result, TimeBudget}; pub trait RankingRuleOutputIter<'ctx, Query> { fn next_bucket(&mut self) -> Result>>; @@ -96,6 +96,7 @@ impl<'ctx, Query: RankingRuleQueryTrait> RankingRule<'ctx, Query> for Sort<'ctx, _logger: &mut dyn SearchLogger, parent_candidates: &RoaringBitmap, parent_query: &Query, + _time_budget: &TimeBudget, ) -> Result<()> { let iter: RankingRuleOutputIterWrapper<'ctx, Query> = match self.field_id { Some(field_id) => { @@ -194,6 +195,7 @@ impl<'ctx, Query: RankingRuleQueryTrait> RankingRule<'ctx, Query> for Sort<'ctx, _ctx: &mut SearchContext<'ctx>, _logger: &mut dyn SearchLogger, universe: &RoaringBitmap, + _time_budget: &TimeBudget, ) -> Result>> { let iter = self.iter.as_mut().unwrap(); if let Some(mut bucket) = iter.next_bucket()? {