pub mod visual;
use std::any::Any;
use roaring::RoaringBitmap;
use super::ranking_rules::BoxRankingRule;
use super::{RankingRule, RankingRuleQueryTrait};
pub trait SearchLogger<Q: RankingRuleQueryTrait> {
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>]);
fn start_iteration_ranking_rule(
&mut self,
_ranking_rule_idx: usize,
_ranking_rule: &dyn RankingRule<'_, Q>,
_query: &Q,
_universe: &RoaringBitmap,
) {
}
fn next_bucket_ranking_rule(
&mut self,
_ranking_rule_idx: usize,
_ranking_rule: &dyn RankingRule<'_, Q>,
_universe: &RoaringBitmap,
_candidates: &RoaringBitmap,
) {
}
fn skip_bucket_ranking_rule(
&mut self,
_ranking_rule_idx: usize,
_ranking_rule: &dyn RankingRule<'_, Q>,
_candidates: &RoaringBitmap,
) {
}
fn end_iteration_ranking_rule(
&mut self,
_ranking_rule_idx: usize,
_ranking_rule: &dyn RankingRule<'_, Q>,
_universe: &RoaringBitmap,
) {
}
fn add_to_results(&mut self, _docids: &[u32]);
fn log_internal_state(&mut self, _rr: &dyn Any);
}
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>]) {}
fn add_to_results(&mut self, _docids: &[u32]) {}
fn log_internal_state(&mut self, _rr: &dyn Any) {}
}