mirror of
https://github.com/meilisearch/meilisearch.git
synced 2025-07-31 02:40:01 +00:00
Introduce the Initial Criterion
This commit is contained in:
28
milli/src/search/criteria/initial.rs
Normal file
28
milli/src/search/criteria/initial.rs
Normal file
@ -0,0 +1,28 @@
|
||||
use roaring::RoaringBitmap;
|
||||
|
||||
use crate::search::query_tree::Operation;
|
||||
use crate::search::WordDerivationsCache;
|
||||
|
||||
use super::{Criterion, CriterionResult};
|
||||
|
||||
pub struct Initial {
|
||||
answer: Option<CriterionResult>
|
||||
}
|
||||
|
||||
impl Initial {
|
||||
pub fn new(query_tree: Option<Operation>, mut candidates: Option<RoaringBitmap>) -> Initial {
|
||||
let answer = CriterionResult {
|
||||
query_tree,
|
||||
candidates: candidates.clone(),
|
||||
bucket_candidates: candidates.take().unwrap_or_default(),
|
||||
};
|
||||
Initial { answer: Some(answer) }
|
||||
}
|
||||
}
|
||||
|
||||
impl Criterion for Initial {
|
||||
#[logging_timer::time("Initial::{}")]
|
||||
fn next(&mut self, _: &mut WordDerivationsCache) -> anyhow::Result<Option<CriterionResult>> {
|
||||
Ok(self.answer.take())
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user