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

How to write UDF in C that resemble the LIKE function

From
b t
Date:
First of all thanks to those who take time to reply to my message.
 
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". In this case, the "LIKE" operator in SQL is not capable enough. It would be nice if the search would match last names "similar to" "Schwarseneger". Can Some one please give me some pointer on this or even sample code that you might have implemented. So basically the thing that I'm doing is like a spell check system where it return the closest match to the word.
 
Thanks in advance
-Brian Trinh 


Do you Yahoo!?
Yahoo! Search presents - Jib Jab's 'Second Term'

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

From
Tom Lane
Date:
b t <qtboyzz@yahoo.com> writes:
> 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". In this case, the "LIKE" operator in SQL
> is not capable enough. It would be nice if the search would match last
> names "similar to" "Schwarseneger". Can Some one please give me some
> pointer on this or even sample code that you might have
> implemented. So basically the thing that I'm doing is like a spell
> check system where it return the closest match to the word.

Didn't your professor notice that there are two or three of those
already in contrib/fuzzystrmatch?
        regards, tom lane


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

From
Michael Fuhr
Date:
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/