Struct space::LinearKnn [−][src]
pub struct LinearKnn<M, I> { pub metric: M, pub points: I, }
Expand description
Performs a linear knn search by iterating over everything in the space and performing a binary search on running set of neighbors.
Example
use space::{Knn, LinearKnn, Metric, Neighbor, KnnFromBatch}; #[derive(Default)] struct Hamming; impl Metric<u8> for Hamming { type Unit = u8; fn distance(&self, &a: &u8, &b: &u8) -> Self::Unit { (a ^ b).count_ones() as u8 } } let data = vec![ (0b1010_1010, 12), (0b1111_1111, 13), (0b0000_0000, 14), (0b1111_0000, 16), (0b0000_1111, 10), ]; let search: LinearKnn<Hamming, _> = KnnFromBatch::from_batch(data.iter()); assert_eq!( &search.knn(&0b0101_0000, 2), &[ (Neighbor { index: 2, distance: 2 }, &data[2].0, &data[2].1), (Neighbor { index: 3, distance: 2 }, &data[3].0, &data[3].1), ] );
Fields
metric: M
points: I