#fuzzy-search #search-engine #search #string-search #fuzzy #light-weight #pattern

simsearch

A simple and lightweight fuzzy search engine that works in memory, searching for similar strings (a pun here)

9 releases

0.2.5 Apr 19, 2024
0.2.4 Feb 6, 2023
0.2.3 Apr 11, 2021
0.2.2 Dec 3, 2020
0.1.4 Apr 16, 2019

#218 in Algorithms

Download history 1590/week @ 2024-04-04 1691/week @ 2024-04-11 2167/week @ 2024-04-18 2077/week @ 2024-04-25 1530/week @ 2024-05-02 3258/week @ 2024-05-09 2523/week @ 2024-05-16 2281/week @ 2024-05-23 2149/week @ 2024-05-30 1933/week @ 2024-06-06 1424/week @ 2024-06-13 2220/week @ 2024-06-20 2468/week @ 2024-06-27 2301/week @ 2024-07-04 2399/week @ 2024-07-11 1410/week @ 2024-07-18

9,033 downloads per month
Used in 5 crates

MIT/Apache

19KB
208 lines

simsearch

Build Status crates.io docs.rs

A simple and lightweight fuzzy search engine that works in memory, searching for similar strings (a pun here).

Documentation

Usage

Add the following to your Cargo.toml:

[dependencies]
simsearch = "0.2"

Example

use simsearch::SimSearch;

let mut engine: SimSearch<u32> = SimSearch::new();

engine.insert(1, "Things Fall Apart");
engine.insert(2, "The Old Man and the Sea");
engine.insert(3, "James Joyce");

let results: Vec<u32> = engine.search("thngs");

assert_eq!(results, &[1]);

By default, Jaro-Winkler distance is used. An alternative Levenshtein distance, which is SIMD-accelerated but only works for ASCII byte strings, can be specified with custom SearchOptions:

use simsearch::{SimSearch, SearchOptions};

let options = SearchOptions::new().levenshtein(true);
let mut engine: SimSearch<u32> = SimSearch::new_with(options);

Also try the interactive demo by:

$ cargo run --release --example books

Contribution

All kinds of contribution are welcomed.

  • Issus. Feel free to open an issue when you find typos, bugs, or have any question.
  • Pull requests. New collection, better implementation, more tests, more documents and typo fixes are all welcomed.

License

Licensed under MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)

Dependencies

~270–440KB