pub struct Searcher { /* private fields */ }Expand description
Searcher — vector + keyword search over the AiMem store.
Implementations§
Source§impl Searcher
impl Searcher
pub fn new(db: AimemDb, embedder: Arc<dyn Embedder>) -> Self
pub fn keyword_only(db: AimemDb) -> Self
pub fn embedder(&self) -> Option<Arc<dyn Embedder>>
Sourcepub async fn vector_search(
&self,
query: &str,
wing: Option<&str>,
room: Option<&str>,
limit: usize,
) -> Result<Vec<SearchResult>, SearchError>
pub async fn vector_search( &self, query: &str, wing: Option<&str>, room: Option<&str>, limit: usize, ) -> Result<Vec<SearchResult>, SearchError>
Semantic vector search using Turso’s vector_distance_cos.
Sourcepub async fn keyword_search_scored(
&self,
query: &str,
wing: Option<&str>,
room: Option<&str>,
limit: usize,
) -> Result<Vec<KeywordSearchResult>, SearchError>
pub async fn keyword_search_scored( &self, query: &str, wing: Option<&str>, room: Option<&str>, limit: usize, ) -> Result<Vec<KeywordSearchResult>, SearchError>
Keyword search with scores.
Uses Turso FTS/Tantivy when available, and falls back to LIKE-based scoring for resilience or substring-style queries.
Sourcepub async fn keyword_search(
&self,
query: &str,
wing: Option<&str>,
room: Option<&str>,
limit: usize,
) -> Result<Vec<Drawer>, SearchError>
pub async fn keyword_search( &self, query: &str, wing: Option<&str>, room: Option<&str>, limit: usize, ) -> Result<Vec<Drawer>, SearchError>
Keyword search returning drawers only.
Sourcepub async fn keyword_fallback_search(
&self,
query: &str,
wing: Option<&str>,
room: Option<&str>,
limit: usize,
) -> Result<Vec<Drawer>, SearchError>
pub async fn keyword_fallback_search( &self, query: &str, wing: Option<&str>, room: Option<&str>, limit: usize, ) -> Result<Vec<Drawer>, SearchError>
Keyword search with token fallback.
Sourcepub async fn hybrid_search(
&self,
query: &str,
wing: Option<&str>,
room: Option<&str>,
limit: usize,
) -> Result<Vec<HybridSearchResult>, SearchError>
pub async fn hybrid_search( &self, query: &str, wing: Option<&str>, room: Option<&str>, limit: usize, ) -> Result<Vec<HybridSearchResult>, SearchError>
Hybrid keyword + vector search fused with reciprocal-rank fusion (RRF).
Sourcepub async fn find_duplicates(
&self,
content: &str,
threshold: f32,
limit: usize,
) -> Result<Vec<SearchResult>, SearchError>
pub async fn find_duplicates( &self, content: &str, threshold: f32, limit: usize, ) -> Result<Vec<SearchResult>, SearchError>
Duplicate check.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for Searcher
impl !RefUnwindSafe for Searcher
impl Send for Searcher
impl Sync for Searcher
impl Unpin for Searcher
impl UnsafeUnpin for Searcher
impl !UnwindSafe for Searcher
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Converts
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Converts
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more