All Projects → lithammer → Fuzzysearch

lithammer / Fuzzysearch

Licence: mit
🐷 Tiny and fast fuzzy search in Go

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Fuzzysearch

Fuse
🔍 Fuzzy search for PHP based on the Bitap algorithm
Stars: ✭ 189 (-68.6%)
Mutual labels:  algorithm, fuzzy-search
Cassandra Lucene Index
Lucene based secondary indexes for Cassandra
Stars: ✭ 584 (-2.99%)
Mutual labels:  fuzzy-search
Chat
基于自然语言理解与机器学习的聊天机器人,支持多用户并发及自定义多轮对话
Stars: ✭ 516 (-14.29%)
Mutual labels:  algorithm
Awgo
Go library for Alfred 3 + 4 workflows
Stars: ✭ 556 (-7.64%)
Mutual labels:  fuzzy-search
Treelib
An efficient implementation of tree data structure in python 2/3.
Stars: ✭ 540 (-10.3%)
Mutual labels:  algorithm
Lintcode
📘 C++11 Solutions of All 289 LintCode Problems (No More Updates)
Stars: ✭ 570 (-5.32%)
Mutual labels:  algorithm
Datastructureandalgorithms
Write code that run faster, use less memory and prepare for your Job Interview
Stars: ✭ 509 (-15.45%)
Mutual labels:  algorithm
Typesense
Fast, typo tolerant, fuzzy search engine for building delightful search experiences ⚡ 🔍 ✨ An Open Source alternative to Algolia and an Easier-to-Use alternative to ElasticSearch.
Stars: ✭ 8,644 (+1335.88%)
Mutual labels:  fuzzy-search
Convchain
Bitmap generation from a single example with convolutions and MCMC
Stars: ✭ 581 (-3.49%)
Mutual labels:  algorithm
Soundfingerprinting
Open source audio fingerprinting in .NET. An efficient algorithm for acoustic fingerprinting written purely in C#.
Stars: ✭ 554 (-7.97%)
Mutual labels:  algorithm
Crypto Trader
💰 Cryptocurrency trading bot library with a simple example strategy (trading via Gemini).
Stars: ✭ 554 (-7.97%)
Mutual labels:  algorithm
Solid
🎯 A comprehensive gradient-free optimization framework written in Python
Stars: ✭ 546 (-9.3%)
Mutual labels:  algorithm
Broot
A new way to see and navigate directory trees : https://dystroy.org/broot
Stars: ✭ 6,362 (+956.81%)
Mutual labels:  fuzzy-search
Lean
Lean Algorithmic Trading Engine by QuantConnect (Python, C#)
Stars: ✭ 5,675 (+842.69%)
Mutual labels:  algorithm
Algorithms Learning With Go
算法学习 Golang 版,参考 raywenderlich/swift-algorithm-club
Stars: ✭ 587 (-2.49%)
Mutual labels:  algorithm
Qiskit Aqua
Quantum Algorithms & Applications in Python
Stars: ✭ 514 (-14.62%)
Mutual labels:  algorithm
Python String Similarity
A library implementing different string similarity and distance measures using Python.
Stars: ✭ 546 (-9.3%)
Mutual labels:  algorithm
Drtlaplus
Dr. TLA+ series - learn an algorithm and protocol, study a specification
Stars: ✭ 561 (-6.81%)
Mutual labels:  algorithm
Diffabledatasources
💾 A library for backporting UITableView/UICollectionViewDiffableDataSource.
Stars: ✭ 601 (-0.17%)
Mutual labels:  algorithm
Data Structure And Algorithms With Es6
Data Structures and Algorithms using ES6
Stars: ✭ 594 (-1.33%)
Mutual labels:  algorithm

Fuzzy Search

Build Status Godoc

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

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.

Usage

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.RankMatch("kitten", "sitting") // 3

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

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}]

License

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].