Live data from Hacker News

Fuzzy Name Matching in Postgres

info.crunchydata.com

1–10 of 22 posts

Re: Fuzzy Name Matching in Postgres

#4
Soundex is cool, we’re using it for a game app I'm working on.

It’s a trivia game app based on a TV show. In the TV show candidates try to guess the right answer just by saying. How it’s written is not relevant (in order to score points). However in the app users need to write it down (voice support coming soon) and can make spelling mistakes. For a lot of stuff the Levenshtein distance just doesn’t cut it.

Re: Fuzzy Name Matching in Postgres

#6
The biggest issue I can see with this approach is what happens if I’ve made a typo which changes the phonetics of the search input so that it gets excluded by the soundex prefilter, eg typing “Harrinbton” instead of “Harrington”

Re: Fuzzy Name Matching in Postgres

#7

the biggest issue is postgres not having tf-idf or BM25 style relevance algorithms. that would have been the right fit for fuzzy name matching.

How would tf-idf help fuzzy match names? You would first need to decide the term youre looking for is the term you've indexed, which is what soundex &c would do.

Re: Fuzzy Name Matching in Postgres

#9

the biggest issue is postgres not having tf-idf or BM25 style relevance algorithms. that would have been the right fit for fuzzy name matching.

How would tf-idf help fuzzy match names? You would first need to decide the term youre looking for is the term you've indexed, which is what soundex &c would do.

Soundex is a useful option for reducing the search space (the blocking stage, with aims to have a high recall).

TF-IDF is a useful option as part of a high precision pipeline _post_ blocking.

A two step pipeline is typical and necessary because the high precision pipeline, while more accurate than the blocking algorithm, suffers from being slow.

Re: Fuzzy Name Matching in Postgres

#10
I've used this stuff to good effect, for years.

SOUNDEX turns 103 this year. https://en.wikipedia.org/wiki/Soundex It's used for telephone-directory and census lookup for names in American English, and is designed for high false-positive matches. It's simplistic. But it's a snap to index. In Bayes lingo it's sensitive but not selective.

Post reply on HN