PostgreSQL idocs

From: Francois Suter <dba(at)paragraf(dot)ch>
To: pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: PostgreSQL idocs
Date: 2002-12-12 10:26:31
Message-ID: BA1E22EA.25DC%dba@paragraf.ch
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi all,

I don't know who is responsible for the PostgreSQL's interactive
documentation so I'm writing to the general ML.

As you probably all noticed, the idocs are pretty limited because it is not
possible to search several words at the same time (either with AND or OR),
as explained in the search help.

Since I recently had to develop something similar (in PHP), here is the code
(attached file), if it can be useful and make the idocs better. It's maybe
not the most efficient algorithm in the world, because it's the first
version and I didn't yet have time to optimize it, but it does the job.

Usage is as follows:

- assume the search text field is called "search"
- assume the text field in the database is called "text"

you can write something like that:

$query = "SELECT * FROM table_name WHERE
".searchString("search","text",true,false);

The third parameter is true for a case-insensitive search (using ILIKE). The
fourth parameters forces all words in the search string to be considered
with "AND".

The way it works is that it takes the search string and tokenizes it around
blanks and + signs. Blanks are interpreted as ORs and + as ANDs. Hence for a
search like "word1+word2 word3", it will return the following string:

"text" ILIKE '%word1%' AND "text" ILIKE '%word2%' OR "text" ILIKE '%word3%'

Pretty rough, but it works. Hope this can help somehow.

--------
Francois

Home page: http://www.monpetitcoin.com/
"We waste our time spending money we don't have to buy things we don't need
to impress people we don't like"

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Francois Suter 2002-12-12 10:36:04 Error codes
Previous Message Çağıl Şeker 2002-12-12 10:06:07 available system commands / stored procedured in PG