Crate ruvector_filter

Crate ruvector_filter 

Source
Expand description

§rUvector Filter

Advanced payload indexing and filtering for rUvector.

This crate provides:

  • Flexible filter expressions (equality, range, geo, text, logical operators)
  • Efficient payload indexing (integer, float, keyword, boolean, geo, text)
  • Fast filter evaluation using indices
  • Support for complex queries with AND/OR/NOT

§Examples

§Creating and Using Filters

use ruvector_filter::{FilterExpression, PayloadIndexManager, FilterEvaluator, IndexType};
use serde_json::json;

// Create index manager
let mut manager = PayloadIndexManager::new();
manager.create_index("status", IndexType::Keyword).unwrap();
manager.create_index("age", IndexType::Integer).unwrap();

// Index some payloads
manager.index_payload("v1", &json!({"status": "active", "age": 25})).unwrap();
manager.index_payload("v2", &json!({"status": "active", "age": 30})).unwrap();
manager.index_payload("v3", &json!({"status": "inactive", "age": 25})).unwrap();

// Create filter
let filter = FilterExpression::and(vec![
    FilterExpression::eq("status", json!("active")),
    FilterExpression::gte("age", json!(25)),
]);

// Evaluate filter
let evaluator = FilterEvaluator::new(&manager);
let results = evaluator.evaluate(&filter).unwrap();
assert_eq!(results.len(), 2);

§Geo Filtering

use ruvector_filter::{FilterExpression, PayloadIndexManager, FilterEvaluator, IndexType};
use serde_json::json;

let mut manager = PayloadIndexManager::new();
manager.create_index("location", IndexType::Geo).unwrap();

manager.index_payload("v1", &json!({
    "location": {"lat": 40.7128, "lon": -74.0060}
})).unwrap();

// Find all points within 1000m of a location
let filter = FilterExpression::geo_radius("location", 40.7128, -74.0060, 1000.0);
let evaluator = FilterEvaluator::new(&manager);
let results = evaluator.evaluate(&filter).unwrap();

Re-exports§

pub use error::FilterError;
pub use error::Result;
pub use evaluator::FilterEvaluator;
pub use expression::FilterExpression;
pub use index::IndexType;
pub use index::PayloadIndex;
pub use index::PayloadIndexManager;

Modules§

error
evaluator
expression
index