Use word_prefix_docids, make get_word_prefix_docids private

This commit is contained in:
Louis Dureuil 2023-04-11 22:06:10 +02:00 committed by Loïc Lecrenier
parent c20c38a7fa
commit 7a01f20df7
5 changed files with 14 additions and 7 deletions

View File

@ -138,7 +138,7 @@ impl<'ctx> SearchContext<'ctx> {
}
/// Retrieve or insert the given value in the `word_prefix_docids` database.
pub fn get_db_word_prefix_docids(
fn get_db_word_prefix_docids(
&mut self,
prefix: Interned<String>,
) -> Result<Option<RoaringBitmap>> {

View File

@ -434,7 +434,7 @@ fill: \"#B6E2D3\"
writeln!(file, "{}: phrase", p.description(ctx))?;
}
if let Some(w) = term_subset.use_prefix_db(ctx) {
let w = ctx.word_interner.get(w);
let w = ctx.word_interner.get(w.interned());
writeln!(file, "{w}: prefix db")?;
}

View File

@ -159,12 +159,12 @@ impl QueryTermSubset {
self.two_typo_subset.intersect(&other.two_typo_subset);
}
pub fn use_prefix_db(&self, ctx: &SearchContext) -> Option<Interned<String>> {
pub fn use_prefix_db(&self, ctx: &SearchContext) -> Option<Word> {
let original = ctx.term_interner.get(self.original);
let Some(use_prefix_db) = original.zero_typo.use_prefix_db else {
return None
};
match &self.zero_typo_subset {
let word = match &self.zero_typo_subset {
NTypoTermSubset::All => Some(use_prefix_db),
NTypoTermSubset::Subset { words, phrases: _ } => {
// TODO: use a subset of prefix words instead
@ -175,7 +175,14 @@ impl QueryTermSubset {
}
}
NTypoTermSubset::Nothing => None,
}
};
word.map(|word| {
if original.ngram_words.is_some() {
Word::Derived(word)
} else {
Word::Original(word)
}
})
}
pub fn all_single_words_except_prefix_db(
&self,

View File

@ -55,7 +55,7 @@ pub fn compute_docids(
compute_prefix_edges(
ctx,
left_word.interned(),
right_prefix,
right_prefix.interned(),
left_phrase,
forward_proximity,
backward_proximity,

View File

@ -44,7 +44,7 @@ pub fn compute_query_term_subset_docids(
}
if let Some(prefix) = term.use_prefix_db(ctx) {
if let Some(prefix_docids) = ctx.get_db_word_prefix_docids(prefix)? {
if let Some(prefix_docids) = ctx.word_prefix_docids(prefix)? {
docids |= prefix_docids;
}
}