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

Responder a