strsim
Implementations of string similarity metrics. Includes Hamming, Levenshtein, OSA, Damerau-Levenshtein, Jaro, Jaro-Winkler, and Sørensen-Dice.
0.11.1
1.0B downloads/mo
#41 most downloaded on crates.io
rapidfuzz/strsim-rs
What this package is like to depend on
Last release 2 years ago
no release in 18 months
Ships unpredictably
gaps range from 2 weeks to 3.9 years
Nearly every release is documented
notes for 24 of 24 stable releases
1 version withdrawn
withdrawn after publishing
12 years old
25 releases · first in 2015
0 releases in the last 12 months
see the full history below
Release timeline
25 releases · Feb 2015 to Apr 2024Releases
latest 25-
0.11.102 Apr 2024 -
0.11.007 Jan 2024Release notes
Open source →Changed
-
improve OSA implementation
- reduce runtime
- reduce binary size by more than
25%
-
reduce binary size of Levenshtein distance
-
improve Damerau-Levenshtein implementation
- reduce memory usage from
O(N*M)toO(N+M) - reduce runtime in our own benchmark by more than
70% - reduce binary size by more than
25%
- reduce memory usage from
-
only boost similarity in Jaro-Winkler once the Jaro similarity exceeds 0.7
Fixed
- Fix transposition counting in Jaro and Jaro-Winkler.
- Limit common prefix in Jaro-Winkler to 4 characters
Release notes
Open source →Changed
-
improve OSA implementation
- reduce runtime
- reduce binary size by more than
25%
-
reduce binary size of Levenshtein distance
-
improve Damerau-Levenshtein implementation
- reduce memory usage from
O(N*M)toO(N+M) - reduce runtime in our own benchmark by more than
70% - reduce binary size by more than
25%
- reduce memory usage from
-
only boost similarity in Jaro-Winkler once the Jaro similarity exceeds 0.7
Fixed
- Fix transposition counting in Jaro and Jaro-Winkler.
- Limit common prefix in Jaro-Winkler to 4 characters
-
-
0.10.107 Jan 2024 withdrawnRelease notes
Open source →Changed
-
improve OSA implementation
- reduce runtime
- reduce binary size by more than
25%
-
reduce binary size of Levenshtein distance
-
improve Damerau-Levenshtein implementation
- reduce memory usage from
O(N*M)toO(N+M) - reduce runtime in our own benchmark by more than
70% - reduce binary size by more than
25%
- reduce memory usage from
-
only boost similarity in Jaro-Winkler once the Jaro similarity exceeds 0.7
Fixed
- Fix transposition counting in Jaro and Jaro-Winkler.
- Limit common prefix in Jaro-Winkler to 4 characters
-
-
0.10.031 Jan 2020 -
0.9.313 Dec 2019Release notes
Open source →Fixed
- Fix Jaro and Jaro-Winkler when the arguments have lengths of 1 and are equal. Previously, the functions would erroneously return 0 instead of 1. Thanks to @vvrably for pointing out the issue.
-
0.9.209 May 2019Release notes
Open source →Changed
- Revert back to the standard library hashmap because it will use hashbrown very soon
- Remove ndarray in favor of using a single vector to represent the 2d grid in Damerau-Levenshtein
-
0.9.108 Apr 2019 -
0.9.006 Apr 2019 -
0.8.019 Aug 2018Release notes
Open source →Added
- Normalized versions of Levenshtein and Damerau-Levenshtein (thanks @gentoid)
-
0.7.017 Jan 2018Release notes
Open source →Changed
- Faster Levenshtein implementation (thanks @wdv4758h)
Removed
- Remove the "against_vec" functions. They are one-liners now, so they don't seem to add enough value to justify making the API larger. I didn't find anybody using them when I skimmed through a GitHub search. If you do use them, you can change the calls to something like:
let distances = strings.iter().map(|a| jaro(target, a)).collect(); -
0.6.027 Dec 2016Release notes
Open source →Added
- Add optimal string alignment distance
Fixed
- Fix Damerau-Levenshtein implementation (previous implementation was actually optimal string alignment; see this [Damerau-Levenshtein explanation])
-
0.5.222 Nov 2016Release notes
Open source →Changed
- Remove Cargo generated documentation in favor of a [docs.rs] link
-
0.5.124 Aug 2016Release notes
Open source →Added
- Add Cargo generated documentation
Fixed
- Fix panic when Jaro or Jaro-Winkler are given strings both with a length of one
-
0.5.012 Aug 2016Release notes
Open source →Changed
- Make Hamming faster (thanks @IBUzPE9) when the two strings have the same length but slower when they have different lengths
-
0.4.118 Apr 2016Release notes
Open source →Added
- Add Vagrant setup for development
- Add AppVeyor configuration for Windows CI
Fixed
- Fix metrics when given strings with multibyte characters (thanks @WanzenBug)
-
0.4.010 Jun 2015Release notes
Open source →Added
- For each metric, add a function that takes a vector of strings and returns a vector of results (thanks @ovarene)
-
0.3.030 Apr 2015 -
0.2.524 Apr 2015 -
0.2.415 Apr 2015 -
0.2.302 Apr 2015 -
0.2.229 Mar 2015 -
0.2.121 Feb 2015 -
0.2.019 Feb 2015 -
0.1.111 Feb 2015Release notes
Open source →Added
- Configure Travis for CI
- Add rustdoc comments
Fixed
- Limit Jaro-Winkler return value to a maximum of 1.0
- Fix float comparisons in tests
-
0.1.010 Feb 2015