mirror of
https://github.com/meilisearch/meilisearch.git
synced 2025-07-31 19:00:00 +00:00
Add support for search offset and limit
This commit is contained in:
@ -29,7 +29,7 @@ pub enum SearchEvents {
|
||||
universe: RoaringBitmap,
|
||||
},
|
||||
ExtendResults {
|
||||
new: RoaringBitmap,
|
||||
new: Vec<u32>,
|
||||
},
|
||||
WordsState {
|
||||
query_graph: QueryGraph,
|
||||
@ -39,6 +39,7 @@ pub enum SearchEvents {
|
||||
paths: PathsMap<u64>,
|
||||
empty_paths_cache: EmptyPathsCache,
|
||||
},
|
||||
RankingRuleSkipBucket { ranking_rule_idx: usize, candidates: RoaringBitmap },
|
||||
}
|
||||
|
||||
pub struct DetailedSearchLogger {
|
||||
@ -97,6 +98,17 @@ impl SearchLogger<QueryGraph> for DetailedSearchLogger {
|
||||
universe: universe.clone(),
|
||||
})
|
||||
}
|
||||
fn skip_bucket_ranking_rule<'transaction>(
|
||||
&mut self,
|
||||
ranking_rule_idx: usize,
|
||||
ranking_rule: &dyn RankingRule<'transaction, QueryGraph>,
|
||||
candidates: &RoaringBitmap,
|
||||
) {
|
||||
self.events.push(SearchEvents::RankingRuleSkipBucket {
|
||||
ranking_rule_idx,
|
||||
candidates: candidates.clone(),
|
||||
})
|
||||
}
|
||||
|
||||
fn end_iteration_ranking_rule<'transaction>(
|
||||
&mut self,
|
||||
@ -109,8 +121,8 @@ impl SearchLogger<QueryGraph> for DetailedSearchLogger {
|
||||
universe: universe.clone(),
|
||||
})
|
||||
}
|
||||
fn add_to_results(&mut self, docids: &mut dyn Iterator<Item = u32>) {
|
||||
self.events.push(SearchEvents::ExtendResults { new: docids.collect() });
|
||||
fn add_to_results(&mut self, docids: &[u32]) {
|
||||
self.events.push(SearchEvents::ExtendResults { new: docids.to_vec() });
|
||||
}
|
||||
|
||||
fn log_words_state(&mut self, query_graph: &QueryGraph) {
|
||||
@ -175,6 +187,15 @@ impl DetailedSearchLogger {
|
||||
"{ranking_rule_idx}.{old_activated_id} -> {ranking_rule_idx}.{next_activated_id} : next bucket",)
|
||||
.unwrap();
|
||||
}
|
||||
SearchEvents::RankingRuleSkipBucket { ranking_rule_idx, candidates } => {
|
||||
let old_activated_id = activated_id(×tamp);
|
||||
*timestamp.last_mut().unwrap() += 1;
|
||||
let next_activated_id = activated_id(×tamp);
|
||||
let len = candidates.len();
|
||||
writeln!(&mut file,
|
||||
"{ranking_rule_idx}.{old_activated_id} -> {ranking_rule_idx}.{next_activated_id} : skip bucket ({len})",)
|
||||
.unwrap();
|
||||
}
|
||||
SearchEvents::RankingRuleEndIteration { universe, ranking_rule_idx } => {
|
||||
let cur_activated_id = activated_id(×tamp);
|
||||
timestamp.pop();
|
||||
|
@ -35,6 +35,13 @@ impl<Q: RankingRuleQueryTrait> SearchLogger<Q> for DefaultSearchLogger {
|
||||
universe: &RoaringBitmap,
|
||||
) {
|
||||
}
|
||||
fn skip_bucket_ranking_rule<'transaction>(
|
||||
&mut self,
|
||||
ranking_rule_idx: usize,
|
||||
ranking_rule: &dyn RankingRule<'transaction, Q>,
|
||||
candidates: &RoaringBitmap,
|
||||
) {
|
||||
}
|
||||
|
||||
fn end_iteration_ranking_rule<'transaction>(
|
||||
&mut self,
|
||||
@ -44,7 +51,7 @@ impl<Q: RankingRuleQueryTrait> SearchLogger<Q> for DefaultSearchLogger {
|
||||
) {
|
||||
}
|
||||
|
||||
fn add_to_results(&mut self, docids: &mut dyn Iterator<Item = u32>) {}
|
||||
fn add_to_results(&mut self, docids: &[u32]) {}
|
||||
|
||||
fn log_words_state(&mut self, query_graph: &Q) {}
|
||||
|
||||
@ -76,13 +83,19 @@ pub trait SearchLogger<Q: RankingRuleQueryTrait> {
|
||||
ranking_rule: &dyn RankingRule<'transaction, Q>,
|
||||
universe: &RoaringBitmap,
|
||||
);
|
||||
fn skip_bucket_ranking_rule<'transaction>(
|
||||
&mut self,
|
||||
ranking_rule_idx: usize,
|
||||
ranking_rule: &dyn RankingRule<'transaction, Q>,
|
||||
candidates: &RoaringBitmap,
|
||||
);
|
||||
fn end_iteration_ranking_rule<'transaction>(
|
||||
&mut self,
|
||||
ranking_rule_idx: usize,
|
||||
ranking_rule: &dyn RankingRule<'transaction, Q>,
|
||||
universe: &RoaringBitmap,
|
||||
);
|
||||
fn add_to_results(&mut self, docids: &mut dyn Iterator<Item = u32>);
|
||||
fn add_to_results(&mut self, docids: &[u32]);
|
||||
|
||||
fn log_words_state(&mut self, query_graph: &Q);
|
||||
|
||||
|
Reference in New Issue
Block a user