A versão utilizada é a 8.3.8
Definição da tabela:
Coluna | Tipo |
Modificadores
-----------------------------------+------------------------+-------------------
-----
id_projeto_pesquisa | integer | not null
introducao | text |
justificativa | text |
metodologia | text |
id_linha_pesquisa | integer |
id_area_conhecimento | integer |
bibliografia | text |
interno | boolean | not null
default f
vetorfts | tsvector |
Índices:
"projeto_pesquisa_pkey" PRIMARY KEY, btree (id_projeto_pesquisa)
"fki_area_cnpqprojeto" btree (id_area_conhecimento)
*"idx_vetorfts_projeto_pesquisa" gin (vetorfts)*
explain select introducao, justificativa, metodologia
from pesquisa.projeto_pesquisa
where vetorfts @@ to_tsquery('educação');
"Seq Scan on projeto_pesquisa (cost=0.00..4269.80 rows=10 width=335)"
" Filter: (vetorfts @@ to_tsquery('educação'::text))"
2009/12/8 Euler Taveira de Oliveira <[email protected]>
> 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
>
--
[]'s
José Flávio M. V. Júnior
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral