This commit is contained in:
Mubelotix 2025-07-01 16:22:25 +02:00
parent 7ae9a4afee
commit dedae94102
No known key found for this signature in database
GPG key ID: 0406DF6C3A69B942
3 changed files with 9 additions and 1 deletions

View file

@ -236,6 +236,7 @@ impl<'a> Search<'a> {
&mut ctx, &mut ctx,
vector, vector,
self.scoring_strategy, self.scoring_strategy,
self.exhaustive_number_hits,
universe, universe,
&self.sort_criteria, &self.sort_criteria,
&self.distinct, &self.distinct,

View file

@ -32,6 +32,7 @@ pub fn bucket_sort<'ctx, Q: RankingRuleQueryTrait>(
logger: &mut dyn SearchLogger<Q>, logger: &mut dyn SearchLogger<Q>,
time_budget: TimeBudget, time_budget: TimeBudget,
ranking_score_threshold: Option<f64>, ranking_score_threshold: Option<f64>,
exhaustive_number_hits: bool,
) -> Result<BucketSortOutput> { ) -> Result<BucketSortOutput> {
logger.initial_query(query); logger.initial_query(query);
logger.ranking_rules(&ranking_rules); logger.ranking_rules(&ranking_rules);
@ -159,7 +160,9 @@ pub fn bucket_sort<'ctx, Q: RankingRuleQueryTrait>(
}; };
} }
while valid_docids.len() < length { while valid_docids.len() < length
|| (exhaustive_number_hits && ranking_score_threshold.is_some())
{
if time_budget.exceeded() { if time_budget.exceeded() {
loop { loop {
let bucket = std::mem::take(&mut ranking_rule_universes[cur_ranking_rule_index]); let bucket = std::mem::take(&mut ranking_rule_universes[cur_ranking_rule_index]);

View file

@ -626,6 +626,7 @@ pub fn execute_vector_search(
ctx: &mut SearchContext<'_>, ctx: &mut SearchContext<'_>,
vector: &[f32], vector: &[f32],
scoring_strategy: ScoringStrategy, scoring_strategy: ScoringStrategy,
exhaustive_number_hits: bool,
universe: RoaringBitmap, universe: RoaringBitmap,
sort_criteria: &Option<Vec<AscDesc>>, sort_criteria: &Option<Vec<AscDesc>>,
distinct: &Option<String>, distinct: &Option<String>,
@ -669,6 +670,7 @@ pub fn execute_vector_search(
placeholder_search_logger, placeholder_search_logger,
time_budget, time_budget,
ranking_score_threshold, ranking_score_threshold,
exhaustive_number_hits,
)?; )?;
Ok(PartialSearchResult { Ok(PartialSearchResult {
@ -825,6 +827,7 @@ pub fn execute_search(
query_graph_logger, query_graph_logger,
time_budget, time_budget,
ranking_score_threshold, ranking_score_threshold,
exhaustive_number_hits,
)? )?
} else { } else {
let ranking_rules = let ranking_rules =
@ -841,6 +844,7 @@ pub fn execute_search(
placeholder_search_logger, placeholder_search_logger,
time_budget, time_budget,
ranking_score_threshold, ranking_score_threshold,
exhaustive_number_hits,
)? )?
}; };