2023-03-18 15:04:34 +01:00
|
|
|
// #[cfg(test)]
|
2023-04-11 11:56:31 +02:00
|
|
|
pub mod visual;
|
2023-02-22 15:34:37 +01:00
|
|
|
|
2023-04-06 16:24:44 +02:00
|
|
|
use std::any::Any;
|
|
|
|
|
2023-02-22 15:34:37 +01:00
|
|
|
use roaring::RoaringBitmap;
|
|
|
|
|
2023-03-28 12:39:42 +02:00
|
|
|
use super::ranking_rules::BoxRankingRule;
|
2023-03-08 09:55:53 +01:00
|
|
|
use super::{RankingRule, RankingRuleQueryTrait};
|
2023-02-22 15:34:37 +01:00
|
|
|
|
2023-03-08 13:26:29 +01:00
|
|
|
/// Trait for structure logging the execution of a search query.
|
|
|
|
pub trait SearchLogger<Q: RankingRuleQueryTrait> {
|
|
|
|
/// Logs the initial query
|
2023-04-11 11:56:31 +02:00
|
|
|
fn initial_query(&mut self, _query: &Q);
|
2023-03-08 13:26:29 +01:00
|
|
|
|
|
|
|
/// Logs the value of the initial set of all candidates
|
2023-04-11 11:56:31 +02:00
|
|
|
fn initial_universe(&mut self, _universe: &RoaringBitmap);
|
2023-03-08 13:26:29 +01:00
|
|
|
|
2023-04-06 16:24:44 +02:00
|
|
|
/// Logs the query that was used to compute the set of all candidates
|
2023-04-11 11:56:31 +02:00
|
|
|
fn query_for_initial_universe(&mut self, _query: &Q);
|
2023-04-06 16:24:44 +02:00
|
|
|
|
2023-03-08 13:26:29 +01:00
|
|
|
/// Logs the ranking rules used to perform the search query
|
2023-04-11 11:56:31 +02:00
|
|
|
fn ranking_rules(&mut self, _rr: &[BoxRankingRule<Q>]);
|
2023-03-08 13:26:29 +01:00
|
|
|
|
|
|
|
/// Logs the start of a ranking rule's iteration.
|
2023-03-23 09:15:57 +01:00
|
|
|
fn start_iteration_ranking_rule(
|
2023-02-22 15:34:37 +01:00
|
|
|
&mut self,
|
2023-02-28 11:49:24 +01:00
|
|
|
_ranking_rule_idx: usize,
|
2023-03-23 09:15:57 +01:00
|
|
|
_ranking_rule: &dyn RankingRule<Q>,
|
2023-02-28 11:49:24 +01:00
|
|
|
_query: &Q,
|
|
|
|
_universe: &RoaringBitmap,
|
2023-02-22 15:34:37 +01:00
|
|
|
) {
|
|
|
|
}
|
2023-04-11 11:56:31 +02:00
|
|
|
/// Logs the end of the computation of a ranking rule bucket
|
2023-03-23 09:15:57 +01:00
|
|
|
fn next_bucket_ranking_rule(
|
2023-02-22 15:34:37 +01:00
|
|
|
&mut self,
|
2023-02-28 11:49:24 +01:00
|
|
|
_ranking_rule_idx: usize,
|
2023-03-23 09:15:57 +01:00
|
|
|
_ranking_rule: &dyn RankingRule<Q>,
|
2023-02-28 11:49:24 +01:00
|
|
|
_universe: &RoaringBitmap,
|
2023-03-02 21:27:42 +01:00
|
|
|
_candidates: &RoaringBitmap,
|
2023-02-22 15:34:37 +01:00
|
|
|
) {
|
|
|
|
}
|
2023-04-11 11:56:31 +02:00
|
|
|
/// Logs the skipping of a ranking rule bucket
|
2023-03-23 09:15:57 +01:00
|
|
|
fn skip_bucket_ranking_rule(
|
2023-02-27 16:14:53 +01:00
|
|
|
&mut self,
|
2023-02-28 11:49:24 +01:00
|
|
|
_ranking_rule_idx: usize,
|
2023-03-23 09:15:57 +01:00
|
|
|
_ranking_rule: &dyn RankingRule<Q>,
|
2023-02-28 11:49:24 +01:00
|
|
|
_candidates: &RoaringBitmap,
|
2023-02-27 16:14:53 +01:00
|
|
|
) {
|
|
|
|
}
|
2023-04-11 11:56:31 +02:00
|
|
|
/// Logs the end of a ranking rule's iteration.
|
2023-03-23 09:15:57 +01:00
|
|
|
fn end_iteration_ranking_rule(
|
2023-02-22 15:34:37 +01:00
|
|
|
&mut self,
|
2023-02-28 11:49:24 +01:00
|
|
|
_ranking_rule_idx: usize,
|
2023-03-23 09:15:57 +01:00
|
|
|
_ranking_rule: &dyn RankingRule<Q>,
|
2023-02-28 11:49:24 +01:00
|
|
|
_universe: &RoaringBitmap,
|
2023-02-22 15:34:37 +01:00
|
|
|
) {
|
|
|
|
}
|
2023-04-11 11:56:31 +02:00
|
|
|
/// Logs the addition of document ids to the final results
|
|
|
|
fn add_to_results(&mut self, _docids: &[u32]);
|
|
|
|
|
|
|
|
/// Logs an internal state in the search algorithms
|
|
|
|
fn log_internal_state(&mut self, _rr: &dyn Any);
|
|
|
|
}
|
|
|
|
|
|
|
|
/// A dummy [`SearchLogger`] which does nothing.
|
|
|
|
pub struct DefaultSearchLogger;
|
|
|
|
|
|
|
|
impl<Q: RankingRuleQueryTrait> SearchLogger<Q> for DefaultSearchLogger {
|
|
|
|
fn initial_query(&mut self, _query: &Q) {}
|
|
|
|
|
|
|
|
fn initial_universe(&mut self, _universe: &RoaringBitmap) {}
|
|
|
|
|
|
|
|
fn query_for_initial_universe(&mut self, _query: &Q) {}
|
|
|
|
|
|
|
|
fn ranking_rules(&mut self, _rr: &[BoxRankingRule<Q>]) {}
|
2023-02-22 15:34:37 +01:00
|
|
|
|
2023-02-28 11:49:24 +01:00
|
|
|
fn add_to_results(&mut self, _docids: &[u32]) {}
|
2023-04-11 11:56:31 +02:00
|
|
|
|
|
|
|
fn log_internal_state(&mut self, _rr: &dyn Any) {}
|
2023-02-22 15:34:37 +01:00
|
|
|
}
|