pub enum LogicalNode {
VectorScan {
collection: String,
k: usize,
oversample: usize,
alpha: f32,
strategy: FusionStrategy,
},
SparseScan {
collection: String,
k: usize,
},
Filter {
predicate: String,
input: Box<LogicalNode>,
},
Join {
left: Box<LogicalNode>,
right_collection: String,
left_key: String,
right_key: String,
},
Project {
columns: Vec<String>,
input: Box<LogicalNode>,
},
Sort {
by: SortKey,
descending: bool,
input: Box<LogicalNode>,
},
Limit {
n: usize,
input: Box<LogicalNode>,
},
HybridScan {
collection: String,
k: usize,
alpha: f32,
strategy: FusionStrategy,
oversample: usize,
},
}Variants§
VectorScan
Scan the vector index for nearest neighbors.
Fields
§
strategy: FusionStrategyFusion strategy.
SparseScan
Full sparse BM25 scan (no dense pre-filtering).
Filter
Apply a scalar metadata filter.
Join
Join vector candidates with a metadata table.
Fields
§
left: Box<LogicalNode>Project
Project (select) specific fields from results.
Sort
Sort results by a field or score.
Limit
Limit number of results.
HybridScan
Hybrid scan: dense HNSW + sparse BM25 combined.
Trait Implementations§
Source§impl Clone for LogicalNode
impl Clone for LogicalNode
Auto Trait Implementations§
impl Freeze for LogicalNode
impl RefUnwindSafe for LogicalNode
impl Send for LogicalNode
impl Sync for LogicalNode
impl Unpin for LogicalNode
impl UnsafeUnpin for LogicalNode
impl UnwindSafe for LogicalNode
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> 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