pub struct BKTree<T> { /* private fields */ }Expand description
Burkhard-Keller metric tree over 32-bit keys with Hamming distance.
Supports radius-bounded nearest-neighbor queries via triangle-inequality pruning. For phonetic fingerprints, typical query time at radius ≤ 4 over 10⁴-10⁶ entries is in the low milliseconds.
§Example
use amt::{encode_token, BKTree};
let mut tree: BKTree<String> = BKTree::new();
for name in ["Khaled", "Khalid", "Ahmed", "Robert"] {
let code = encode_token(name);
for &sp in &code.spectrals {
tree.add(sp, name.to_string());
}
}
let query = encode_token("Khaleed");
let hits = tree.query(query.spectrals[0], 4);
assert!(hits.iter().any(|(_, name)| name.as_str() == "Khaled"));Implementations§
Trait Implementations§
Auto Trait Implementations§
impl<T> Freeze for BKTree<T>
impl<T> RefUnwindSafe for BKTree<T>where
T: RefUnwindSafe,
impl<T> Send for BKTree<T>where
T: Send,
impl<T> Sync for BKTree<T>where
T: Sync,
impl<T> Unpin for BKTree<T>
impl<T> UnsafeUnpin for BKTree<T>
impl<T> UnwindSafe for BKTree<T>where
T: UnwindSafe,
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