This is library for performing fuzzy string matching.
Create a penalty configuration that is applied to each additional character in needle.
Create a penalty configuration that is applied to each out of order character in hay.
Create a penalty configuration that is applied to each character between two keys.
Represents a configuration element for customization.
Perform fuzzy matching between a query String (needle) and a target String (hay). The order of the arguments are significant. Lower score is better. Specifying some separators will allow for partial matching within a sentence. The default configuration is addPenalty = 10, movePenalty = 1000, removePenalty = 10000, insertPenalty = 1.
let
simpleMatch config separators needle hay =
match config separators needle hay |> .score
in
simpleMatch [] [] "test" "test"
== 0
simpleMatch
[]
[]
"tes"
"test"
== 10
simpleMatch
[ addPenalty 10000 ]
[]
"tes"
"test"
== 10000
simpleMatch
[]
[]
"tst"
"test"
== 11
simpleMatch
[]
[]
"test"
"tste"
== 1000
simpleMatch
[]
[]
"test"
"tst"
== 10000
simpleMatch
[]
[ "/" ]
"/u/b/s"
"/usr/local/bin/sh"
== 50
simpleMatch
[]
[]
"/u/b/s"
"/usr/local/bin/sh"
== 2116
List.sortBy
(simpleMatch [] [] "hrdevi")
[ "screen", "disk", "harddrive", "keyboard", "mouse", "computer" ]
== [ "harddrive", "keyboard", "disk", "screen", "computer", "mouse" ]Represents the result of a match. score is the total score of the result. matches is a list of matching words within the hay.
Represents a matching word in hay. score is the score that this Match contributes to the total score in a Result. offset is the index where this match starts in the hay. length is the length of the match. keys is a list of matching indexes within the word. The keys are relative to the offset.
Represents a matching character in a Match.
Create a penalty configuration that is applied to each additional character in hay.