IndexExtension

Trait IndexExtension 

Source
pub trait IndexExtension: Send + Sync {
    // Required methods
    fn index_type(&self) -> &str;
    fn insert(
        &mut self,
        key: &Value,
        pointer: TuplePointer,
    ) -> Result<(), String>;
    fn search(&self, key: &Value) -> Result<Vec<TuplePointer>, String>;
    fn knn_search(
        &self,
        query: &Value,
        k: usize,
    ) -> Result<Vec<(TuplePointer, f64)>, String>;
    fn serialize(&self) -> Result<Vec<u8>, String>;
    fn deserialize(bytes: &[u8]) -> Result<Box<dyn IndexExtension>, String>
       where Self: Sized;
}
Expand description

Extension trait for custom index types

Required Methods§

Source

fn index_type(&self) -> &str

Index type name (e.g., “hnsw”, “ivfflat”, “gin”)

Source

fn insert(&mut self, key: &Value, pointer: TuplePointer) -> Result<(), String>

Insert a key-value pair

Source

fn search(&self, key: &Value) -> Result<Vec<TuplePointer>, String>

Standard lookup for point queries

k-NN search for vector similarity (returns k nearest)

Source

fn serialize(&self) -> Result<Vec<u8>, String>

Serialize index to bytes for persistence

Source

fn deserialize(bytes: &[u8]) -> Result<Box<dyn IndexExtension>, String>
where Self: Sized,

Deserialize index from bytes

Implementors§