One bored afternoon, I dusted off my old notes from an algorithm class I took, and tried my hand at some dynamic programming. Fuzzel is the result of that.
Fuzzel uses Damerau-Levenshtein Distance to do fuzzy string matching. It also includes pure Levenshtien distance, and Hamming Distance for shits and giggles.
Simply include it in your file. Note that the source also comes with fuzzel_min.lua, this is a minified version of fuzzel that works exactly the same. If you need clients to download this code often, or don't have much bandwith, consider useing the minified version.
In addition to these methods, there are shortened versions of these methods at the bottom, for example:
fuzzel.dldis the same as
fuzzel.DamerauLevenshtienDistance
fuzzel.LevenshtienDistance_extended(string_first, string_second, number_addcost, number_substituecost, number_deletecost)returns number_distance
fuzzel.LevenshtienDistance(string_first, strings_second)returns number_distance
fuzzel.LevensteinRatio(string_first, string_second)returns number_distance
fuzzel.DamerauLevenshtienDistance_extended(string_first, string_second, number_addcost, number_substituecost, number_deletecost, number_transpositioncost)returns number
fuzzel.DamerauLevenshtienDistance(stirng_first, strings_second)returns number
fuzzel.DamerauLevenshtienRatio(string_first, string_second)returns number
fuzzel.HammingDistance(string_first, string_second)returns number
fuzzel.HammingRatio(string_first, string_second)returns number
fuzzel.FuzzySearchDistance(string_needle, vararg_in)returns string_closest, number_distance
fuzzel.FuzzySearchRatio(string_needle, vararg_in)returns string_closest, nubmer_ratio