Re: Bug in metaphone (contrib/fuzzystrmatch)

From: Joe Conway <mail(at)joeconway(dot)com>
To: jim(at)nasby(dot)net
Cc: "General (PostgreSQL)" <pgsql-general(at)postgresql(dot)org>, "Patches (PostgreSQL)" <pgsql-patches(at)postgresql(dot)org>
Subject: Re: Bug in metaphone (contrib/fuzzystrmatch)
Date: 2003-06-06 16:21:54
Message-ID: 3EE0BFA2.3000208@joeconway.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general pgsql-patches

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)

Please apply.

Thanks,

Joe

Attachment Content-Type Size
fuzzystrmatch-fix.patch text/plain 3.1 KB

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Rory Campbell-Lange 2003-06-06 16:38:07 Re: Return Record
Previous Message Andre Truter 2003-06-06 15:54:49 Re: Nulls get converted to 0 problem

Browse pgsql-patches by date

  From Date Subject
Next Message Bruce Momjian 2003-06-06 17:41:30 Re: Ipv6 network cleanup patch #2.
Previous Message Rod Taylor 2003-06-06 15:49:52 Re: Sequence usage patch