11 releases

0.1.1 Sep 6, 2024
0.1.0 Jun 14, 2024
0.0.9 Jun 13, 2024
0.0.6 Apr 16, 2024
0.0.2 Sep 27, 2023

#725 in Algorithms

Download history 102/week @ 2024-07-22 144/week @ 2024-09-02 17/week @ 2024-09-16 31/week @ 2024-09-23 4/week @ 2024-09-30 3/week @ 2024-10-07

823 downloads per month

MIT license

40KB
1K SLoC

furze

finite state transducers (fst) writen in rust, refer to the Lucene fst implementation. The FST stores all terms in bytes and reuses the prefix and suffix of term Index to make it small enough to fit into memory, reducing storage space, commonly used in search engines, speech recognition and natural language search.

Example:

use furze::Builder;
use furze::FST;
fn main() {
    let mut b = Builder::new(vec![]);
    b.add("cat".as_bytes(), 5);
    b.add("dog".as_bytes(), 10);
    b.add("deep".as_bytes(), 15);
    b.add("logs".as_bytes(), 2);
    b.finish();

    let mut d = FST::load(b.get().to_vec());
    let res = d.find("logs".as_bytes());
    match res {
        Ok(v) => {
            println!("out:{}", v);
        }
        Err(e) => {
            println!("error:{:?}", e);
        }
    }
}

terminal:

out:2

Dependencies

~0.4–0.9MB
~20K SLoC