José Flávio Jr. escreveu:
> Tenho uma tabela com vários campos do tipo /text/. Quero submeter
> consultas sobre eles. Assim, criei um campo do tipo /tsvector/
> e povoei usando /to_tsvector()/ concatenando três desses campos /text/.
> Após isso, criei o índice GIN sobre o campo /tsvector/. Veja abaixo:
>
Há algo de estranho. Qual a versão do PostgreSQL? Mostre-nos a definição da
tabela e os índices.
euler=# \d foo
Table "public.foo"
Column | Type | Modifiers
--------+-----------------------+-----------
cidade | character varying(80) |
euler=# alter table foo add column cidade_fts tsvector;
ALTER TABLE
euler=# update foo set cidade_fts=to_tsvector(foo::text);
UPDATE 5564
euler=# select * from foo limit 10;
cidade | cidade_fts
-----------------+----------------------
Cumbe | 'cumb':1
Acrelândia | 'acrelând':1
Assis Brasil | 'assis':1 'brasil':2
Brasiléia | 'brasil':1
Bujari | 'bujar':1
Capixaba | 'capixab':1
Cruzeiro do Sul | 'cruzeir':1 'sul':3
Epitaciolândia | 'epitaciolând':1
Feijó | 'feij':1
Jordão | 'jordã':1
(10 rows)
euler=# create index fooi on foo using gin (cidade_fts);
CREATE INDEX
euler=# explain select * from foo where cidade_fts @@ to_tsquery('assis');
QUERY PLAN
-------------------------------------------------------------------
Bitmap Heap Scan on foo (cost=4.26..8.28 rows=1 width=39)
Recheck Cond: (cidade_fts @@ to_tsquery('assis'::text))
-> Bitmap Index Scan on fooi (cost=0.00..4.26 rows=1 width=0)
Index Cond: (cidade_fts @@ to_tsquery('assis'::text))
(4 rows)
euler=# drop index fooi;
DROP INDEX
euler=# explain select * from foo where cidade_fts @@ to_tsquery('assis');
QUERY PLAN
------------------------------------------------------
Seq Scan on foo (cost=0.00..160.46 rows=1 width=39)
Filter: (cidade_fts @@ to_tsquery('assis'::text))
(2 rows)
--
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