Jorge Vilela escreveu:
> Pessoal, tentei, tentei, tentei e não conseguí chegar em um resultado
> satisfatório usando tsvector @@ tsquery com trgm. A busca por meias
> palavras é realmente falha.
>
O suporte a correspondência parcial (aka partial match) na busca textual só
foi implementado na 8.4. :(
> O fato é que, há tempos preciso me livrar desse lLIKE '%%', mas não sei
> como. Especialmente em casos onde preciso buscar em dois ou mais campos.
>
Com a 8.4 você poderá fazer:
euler=# create table foo (a tsvector);
CREATE TABLE
euler=# insert into foo select 'euler taveira de oliveira'::tsvector from
generate_series(1, 1000);
INSERT 0 1000
euler=# insert into foo select 'jorge vilela'::tsvector from
generate_series(1, 100);
INSERT 0 100
euler=# create index fooi on foo using gin (a);
CREATE INDEX
euler=# select * from foo where a @@ 'vile:*' limit 5;
a
------------------
'jorge' 'vilela'
'jorge' 'vilela'
'jorge' 'vilela'
'jorge' 'vilela'
'jorge' 'vilela'
(5 registros)
euler=# explain analyze select * from foo where a @@ 'vile:*';
QUERY PLAN
---------------------------------------------------------------------------------------------------------------
Bitmap Heap Scan on foo (cost=4.30..13.77 rows=6 width=43) (actual
time=0.264..0.470 rows=100 loops=1)
Recheck Cond: (a @@ '''vile'':*'::tsquery)
-> Bitmap Index Scan on fooi (cost=0.00..4.30 rows=6 width=0) (actual
time=0.237..0.237 rows=100 loops=1)
Index Cond: (a @@ '''vile'':*'::tsquery)
Total runtime: 0.739 ms
(5 registros)
--
Euler Taveira de Oliveira
http://www.timbira.com/
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral