rindex 0.2.0

Rindex: reverse nearest neighbor search index for high-dimensional clustered datasets.
Documentation

GitHub Workflow Status crates.io

rindex

Rindex: fully dynamic nearest neighbor search index for high-dimensional clustered datasets.

Usage

The following example shows how to update and query Rindex:

let mut rindex = Rindex::default();

// Insert some points
let a = rindex.insert([1.0, 1.0]);
let b = rindex.insert([2.0, 2.0]);
let c = rindex.insert([3.0, 3.0]);
let d = rindex.insert([20.0, 20.0]);

// Query the tree for nearest neighbors of the query point
let query_point = [0.0, 0.0];
let (indices, _distances) = rindex.query_neighbors(&query_point, 3);

// The result should contain the points a, b, and c
assert_eq!(indices.len(), 3);
assert!(indices.contains(&a));
assert!(indices.contains(&b));
assert!(indices.contains(&c));

// Delete the point c
rindex.delete(c);

// Query the tree again (c should not be in the result)
let (indices, _distances) = rindex.query_neighbors(&query_point, 3);
assert_eq!(indices.len(), 3);
assert!(indices.contains(&a));
assert!(indices.contains(&b));
assert!(indices.contains(&d));

License

This project is licensed under the Apache License, Version 2.0 - See the LICENSE.md file for details.