MCPcopy Index your code
hub / github.com/lithammer/fuzzysearch

github.com/lithammer/fuzzysearch @v1.1.8

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.1.8 ↗ · + Follow
75 symbols 214 edges 5 files 17 documented · 23% 37 cross-repo links updated 8d agov1.1.8 · 2023-05-15★ 1,3219 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Fuzzy Search

Inspired by bevacqua/fuzzysearch, a fuzzy matching library written in JavaScript. But contains some extras like ranking using Levenshtein distance and finding matches in a list of words.

Fuzzy searching allows for flexibly matching a string with partial input, useful for filtering data very quickly based on lightweight user input.

The current implementation uses the algorithm suggested by Mr. Aleph, a russian compiler engineer working at V8.

Install

go get github.com/lithammer/fuzzysearch/fuzzy

Usage

package main

import "github.com/lithammer/fuzzysearch/fuzzy"

func main() {
    fuzzy.Match("twl", "cartwheel")  // true
    fuzzy.Match("cart", "cartwheel") // true
    fuzzy.Match("cw", "cartwheel")   // true
    fuzzy.Match("ee", "cartwheel")   // true
    fuzzy.Match("art", "cartwheel")  // true
    fuzzy.Match("eeel", "cartwheel") // false
    fuzzy.Match("dog", "cartwheel")  // false
    fuzzy.Match("kitten", "sitting") // false

    fuzzy.RankMatch("kitten", "sitting") // -1
    fuzzy.RankMatch("cart", "cartwheel") // 5

    words := []string{"cartwheel", "foobar", "wheel", "baz"}
    fuzzy.Find("whl", words) // [cartwheel wheel]

    fuzzy.RankFind("whl", words) // [{whl cartwheel 6 0} {whl wheel 2 2}]

    // Unicode normalized matching.
    fuzzy.MatchNormalized("cartwheel", "cartwhéél") // true

    // Case insensitive matching.
    fuzzy.MatchFold("ArTeeL", "cartwheel") // true
}

You can sort the result of a fuzzy.RankFind() call using the sort package in the standard library:

matches := fuzzy.RankFind("whl", words) // [{whl cartwheel 6 0} {whl wheel 2 2}]
sort.Sort(matches) // [{whl wheel 2 2} {whl cartwheel 6 0}]

See the fuzzy package documentation for more examples.

License

MIT

Core symbols most depended-on inside this repo

Shape

Function 64
Method 5
Struct 5
TypeAlias 1

Languages

Go100%

Modules by API surface

fuzzy/fuzzy.go35 symbols
fuzzy/fuzzy_test.go32 symbols
fuzzy/levenshtein_test.go4 symbols
fuzzy/levenshtein.go3 symbols
fuzzy/fuzz_test.go1 symbols

For agents

$ claude mcp add fuzzysearch \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page