Skip to main content

reclink

Blazing-fast fuzzy matching and record linkage, powered by Rust

pip install reclink

21 String Metrics

Edit distance, token-based, subsequence, alignment, and hybrid metrics — including Ratcliff-Obershelp, Needleman-Wunsch, Gotoh, and Monge-Elkan.

Rust-Powered Speed

All core logic runs in compiled Rust with Rayon parallelism. 2-5x faster than pure Python alternatives.

Record Linkage Pipeline

Full pipeline with 11 blocking strategies, field comparators, 8 classifiers, DBSCAN/OPTICS clustering, and quality metrics.

Pandas & Polars Integration

DataFrame accessors for fuzzy merge, phonetic encoding, and deduplication. Native Polars plugin for zero-GIL overhead.

10 Phonetic Algorithms

Soundex, Metaphone, Double Metaphone, NYSIIS, Caverphone, Cologne, Beider-Morse, Phonex, MRA, and Daitch-Mokotoff.

Interactive Playground

Try every function in your browser. Upload CSV files, compare metrics side-by-side, and build pipelines visually.

Quick Example

from reclink import jaro_winkler, match_best, cdist

# Compare two strings
jaro_winkler("Jon Smith", "John Smyth")  # 0.832

# Find the best match from candidates
match_best("Jon", ["John", "Jane", "James"])
# ("John", 0.933, 0)

# All-pairs similarity matrix (parallelized)
cdist(["Jon", "Jane"], ["John", "Janet"], scorer="jaro_winkler")
# array([[0.93, 0.0 ],
#        [0.0 , 0.93]])

Performance

Pairwise comparison benchmarks (microseconds per pair, lower is better):

Metricreclinkrapidfuzzjellyfish
levenshtein0.55 μs0.18 μs1.28 μs
jaro_winkler0.31 μs0.20 μs0.68 μs
damerau_levenshtein0.93 μs0.24 μs2.41 μs

2-3x faster than jellyfish, 5x faster than thefuzz — with a far richer feature set.