This commit is contained in:
2026-07-22 20:34:15 -04:00
parent 21016af858
commit 0ddf2caf38
6 changed files with 61 additions and 111 deletions
+5 -24
View File
@@ -1,14 +1,13 @@
use std::fs;
use crate::{error, IndexWriter};
use crate::error;
use crate::schema::Schema;
use std::path::PathBuf;
use std::sync::Arc;
use tantivy::collector::TopDocs;
use tantivy::directory::{ManagedDirectory, MmapDirectory};
use tantivy::query::{BooleanQuery, Occur, QueryParser, TermQuery};
use tantivy::schema::{Field, IndexRecordOption};
use tantivy::tokenizer::{LowerCaser, NgramTokenizer, TextAnalyzer, TokenizerManager};
use tantivy::{Index, IndexReader, ReloadPolicy, TantivyDocument, Term};
use tantivy::{Index, IndexReader, IndexWriter, ReloadPolicy, TantivyDocument, Term};
use tracing::debug_span;
#[derive(Default)]
@@ -52,16 +51,13 @@ impl SearchIndexBuilder {
Ok(SearchIndex {
index,
reader,
writer: None,
})
}
}
#[derive(Clone)]
pub struct SearchIndex {
index: Index,
reader: IndexReader,
writer: Option<Arc<IndexWriter>>,
}
impl SearchIndex {
@@ -69,23 +65,8 @@ impl SearchIndex {
SearchIndexBuilder::default()
}
pub fn writer(&mut self) -> crate::Result<&IndexWriter> {
if self.writer.is_none() {
let inner = self.index.writer(128 * 1024 * 1024)?;
self.writer = Some(Arc::new(IndexWriter { inner }));
}
Ok(self.writer.as_ref().unwrap())
}
pub fn commit(&mut self) -> crate::Result<()> {
if let Some(writer) = self.writer.take() {
if let Some(mut writer) = Arc::into_inner(writer) {
writer.commit()?;
}
}
Ok(())
pub fn writer(&mut self) -> crate::Result<IndexWriter> {
Ok(self.index.writer(128 * 1024 * 1024)?)
}
pub fn query(
@@ -95,7 +76,7 @@ impl SearchIndex {
default_fields: Vec<Field>,
limit: usize,
) -> error::Result<Vec<TantivyDocument>> {
let _span = debug_span!("Search Query").entered();
let _enter = debug_span!("Search Query").entered();
let parser = QueryParser::for_index(&self.index, default_fields);
let (user_query, _) = parser.parse_query_lenient(user_query);