Skip to content

laserpants/fuzzyset-haskell

Repository files navigation

fuzzyset-haskell

Haskell CI License Language Hackage

A fuzzy string set data structure for approximate string matching.

In a nutshell:

  1. Add data to the set (see add, add_, addMany, and addMany_)
  2. Query the set (see find, findMin, findOne, findOneMin, closestMatchMin, and closestMatch)

Refer to the Haddock docs for details.

Example

{-# LANGUAGE OverloadedStrings #-}
module Main where                                                               ```

import Control.Monad.Trans.Class (lift)
import Data.Text (Text)
import Data.FuzzySet (FuzzySearchT, add_, closestMatch, runDefaultFuzzySearchT)

findMovie :: Text -> FuzzySearchT IO (Maybe Text)
findMovie = closestMatch

prog :: FuzzySearchT IO ()
prog = do
  add_ "Jurassic Park"
  add_ "Terminator"
  add_ "The Matrix"
  result <- findMovie "The Percolator"
  lift (print result)

main :: IO ()
main = runDefaultFuzzySearchT prog