This commit is contained in:
Alex Wied
2026-06-29 15:20:02 -04:00
parent ee5deb87c1
commit 59c8dffb01
10 changed files with 149 additions and 141 deletions
-3
View File
@@ -11,7 +11,4 @@ pub enum SearchError {
#[error(transparent)]
OpenDirectoryError(#[from] tantivy::directory::error::OpenDirectoryError),
#[error("Path to index not specified")]
IndexPathNotSpecified,
}
+27 -26
View File
@@ -21,37 +21,38 @@ impl SearchIndexBuilder {
}
pub fn build(self) -> error::Result<SearchIndex> {
if let Some(path) = self.path {
let ngram_32 = NgramTokenizer::new(1, 32, false)?;
let ngram_32_lowercase = TextAnalyzer::builder(ngram_32)
.filter(LowerCaser)
.build();
let ngram_32 = NgramTokenizer::new(1, 32, false)?;
let ngram_32_lowercase = TextAnalyzer::builder(ngram_32)
.filter(LowerCaser)
.build();
let tokenizer_manager = TokenizerManager::default();
tokenizer_manager.register("ngram_32", ngram_32_lowercase);
let tokenizer_manager = TokenizerManager::default();
tokenizer_manager.register("ngram_32", ngram_32_lowercase);
let builder = Index::builder()
.schema(Schema::schema().clone())
.tokenizers(tokenizer_manager);
let index = if let Some(path) = self.path {
let mmap_directory = MmapDirectory::open(path)?;
let managed_directory = ManagedDirectory::wrap(Box::new(mmap_directory))?;
let index = Index::builder()
.schema(Schema::schema().clone())
.tokenizers(tokenizer_manager)
.open_or_create(managed_directory)?;
let reader = index
.reader_builder()
.reload_policy(ReloadPolicy::OnCommitWithDelay)
.try_into()?;
let writer = index.writer(50_000_000)?;
Ok(SearchIndex {
index,
reader,
writer,
})
builder.open_or_create(managed_directory)?
} else {
Err(SearchError::IndexPathNotSpecified)
}
builder.create_in_ram()?
};
let reader = index
.reader_builder()
.reload_policy(ReloadPolicy::OnCommitWithDelay)
.try_into()?;
let writer = index.writer(50_000_000)?;
Ok(SearchIndex {
index,
reader,
writer,
})
}
}