gramdex
K-gram indexing for approximate string matching.
Quickstart
[]
= "0.1.1"
use ;
let mut ix = new;
ix.add_document_trigrams;
ix.add_document_trigrams;
let candidates = ix.candidates_union_trigrams;
let mut verified: = candidates
.into_iter
.filter
.collect;
verified.sort_unstable;
assert_eq!;
Best starting points
- Gram generation:
char_kgrams/char_trigrams - Candidate index:
GramDex(union candidates, scored candidates, bailout planning) - Verification:
trigram_jaccard
Example
Expected output:
query: "nearest neighbor"
doc 3: shared=13, jaccard=0.394, text="nearest neighbour spelling variant"
doc 0: shared=14, jaccard=0.341, text="vector quantization for nearest neighbor search"
Design notes
- This crate focuses on candidate generation; you bring your own verification policy.
- Offsets/spans are naturally expressed in Unicode scalar values (
charcount), not bytes.
License
Licensed under either of:
- Apache License, Version 2.0 (
LICENSE-APACHE) - MIT license (
LICENSE-MIT)
at your option.