| 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: | Whole Thread | Raw Message | 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/
| 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 |