sábado, julho 11, 2009

Busca de palavras (PostgreSQL)

Mensagem postada na lista pgbr-geral sobre a busca de palavras.
Autores da mesma: Rodrigo Machado e o Euler Taveira de Oliveira.


> Resumindo, tem q trazer todos os registros que contenham uma e outra
> palavra.
> Qual é a melhor pratica para isto?
>
Como você mesmo disse: busca textual (aka _text search_). Veja:

euler=# create table foo (a tsvector);
CREATE TABLE
euler=# insert into foo values('Euler Taveira de Oliveira'),('Jose Taveira dos
Santos'),('Joao Tavares da Cunha');
INSERT 0 3
euler=# create index fooi on foo using gin (a);
CREATE INDEX
euler=# select * from foo where a @@ 'Taveira & Oliveira'; -- operador E
a
-----------------------------------
'Euler' 'Oliveira' 'Taveira' 'de'
(1 row)

euler=# select * from foo where a @@ 'Taveira | Oliveira'; -- operador OU
a
-----------------------------------
'Euler' 'Oliveira' 'Taveira' 'de'
'Jose' 'Santos' 'Taveira' 'dos'
(2 rows)

Nenhum comentário: