Re: How to write UDF in C that resemble the LIKE function

From: Michael Fuhr <mike(at)fuhr(dot)org>
To: b t <qtboyzz(at)yahoo(dot)com>
Cc: pgsql-interfaces(at)postgresql(dot)org
Subject: Re: How to write UDF in C that resemble the LIKE function
Date: 2005-02-13 04:07:55
Message-ID: 20050213040755.GA25541@winnie.fuhr.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-interfaces

On Sat, Feb 12, 2005 at 07:40:17PM -0800, b t wrote:
>
> I have a question, as part of the project that I have to do for school,
> we have to implement a User Define Function in C that is similar like the
> LIKE funtion in PostgreSQL. For example where a customer is searching for
> an actor whose last name sounds like "Schwarseneger" (notice the typo).
> However, the customer is not sure neither about the spelling nor the
> pronunciation. The real star name should be "Schwarzenegger".

The contrib/fuzzystrmatch module contains implementations of the
soundex, levenshtein, and metaphone algorithms. Here's an example:

CREATE TABLE actor (
id serial PRIMARY KEY,
name text NOT NULL
);

INSERT INTO actor (name) VALUES ('Schwarzenegger');

SELECT * FROM actor WHERE soundex(name) = soundex('Schwarseneger');
id | name
----+----------------
1 | Schwarzenegger

You could create a functional index to speed up queries on large
tables:

CREATE INDEX actor_name_soundex_idx ON actor (soundex(name));

--
Michael Fuhr
http://www.fuhr.org/~mfuhr/

In response to

Browse pgsql-interfaces by date

  From Date Subject
Next Message Francisco Figueiredo Jr. 2005-02-14 00:42:00 Re: Function return number of affected rows
Previous Message Tom Lane 2005-02-13 04:07:32 Re: How to write UDF in C that resemble the LIKE function