pgsql-server/contrib/fuzzystrmatch README.fuzz ...

Started by Bruce Momjianabout 23 years ago1 messagescomitters
Jump to latest
#1Bruce Momjian
bruce@momjian.us

CVSROOT: /cvsroot
Module name: pgsql-server
Changes by: momjian@svr1.postgresql.org 03/06/24 19:59:46

Modified files:
contrib/fuzzystrmatch: README.fuzzystrmatch fuzzystrmatch.c
fuzzystrmatch.h

Log message:
Jim C. Nasby wrote:

Second argument to metaphone is suposed to set the limit on the
number of characters to return, but it breaks on some phrases:

usps=# select metaphone(a,3),metaphone(a,4),metaphone(a,20) from
(select 'Hello world'::varchar AS a) a;
HLW | HLWR | HLWRLT

usps=# select metaphone(a,3),metaphone(a,4),metaphone(a,20) from
(select 'A A COMEAUX MEMORIAL'::varchar AS a) a;
AKM | AKMKS | AKMKSMMRL

In every case I've found that does this, the 4th and 5th letters are
always 'KS'.

Nice catch.

There was a bug in the original metaphone algorithm from CPAN. Patch
attached (while I was at it I updated my email address, changed the
copyright to PGDG, and removed an unnecessary palloc). Here's how it
looks now:

regression=# select metaphone(a,4) from (select 'A A COMEAUX
MEMORIAL'::varchar AS a) a;
metaphone
-----------
AKMK
(1 row)

regression=# select metaphone(a,5) from (select 'A A COMEAUX
MEMORIAL'::varchar AS a) a;
metaphone
-----------
AKMKS
(1 row)

Joe Conway