E se eu quiser pesquisar que comece com Euler e termine com oliveira.
Indice com _pattern_ops so aceita pesquisa no inicio do campo.
E indice gist não aceita indice composto.

Não consegui resolver esse problema ? 

Se puder dar um ideia.


Euler Taveira de Oliveira-2 wrote:
> 
> mateusgra escreveu:
>> Gostaria de saber se o Tsearch tem como localizar um texto que comece com
>> uma determinada palavra com se fosse o like 'POSTGRESQL 8.2%'.
>> 
> Você _não_ entendeu o conceito de busca textual [1] (aka text _search_);
> quando se transforma um texto no tipo tsvector, este "perde"
> posicionamento e
> "ganha" peso (relevância) e proximidade. Assim, sem posicionamento é
> impossível fazer uma comparação com prefixo do texto. O uso do :* nos
> deixa
> comparar com o prefixo de *cada* lexema.
> 
> O que você precisa é de expressões regulares [2]. Veja:
> 
> euler=# create table bar (a text);
> CREATE TABLE
> euler=# insert into bar select 'euler taveira de oliveira' from
> generate_series(1, 10);
> INSERT 0 10
> euler=# insert into bar select 'jorge vilela' from generate_series(1,
> 5000);
> INSERT 0 5000
> euler=# create index bari on bar (a text_pattern_ops);
> CREATE INDEX
> euler=# select * from bar where a ~ '^euler';
>              a
> ---------------------------
>  euler taveira de oliveira
>  euler taveira de oliveira
>  euler taveira de oliveira
>  euler taveira de oliveira
>  euler taveira de oliveira
>  euler taveira de oliveira
>  euler taveira de oliveira
>  euler taveira de oliveira
>  euler taveira de oliveira
>  euler taveira de oliveira
> (10 rows)
> 
> euler=# explain analyze select * from bar where a ~ '^euler';
>                                                      QUERY PLAN
> 
> ---------------------------------------------------------------------------------------------------------------------
>  Bitmap Heap Scan on bar  (cost=4.35..25.17 rows=10 width=13) (actual
> time=0.101..0.224 rows=10.00 loops=1.00)
>    Filter: (a ~ '^euler'::text)
>    ->  Bitmap Index Scan on bari  (cost=0.00..4.35 rows=10 width=0)
> (actual
> time=0.055..0.055 rows=10.00 loops=1.00)
>          Index Cond: ((a ~>=~ 'euler'::text) AND (a ~<~ 'eules'::text))
>  Total runtime: 0.334 ms
> (5 rows)
> 
> 
> [1] http://www.postgresql.org/docs/8.4/static/textsearch.html
> [2]
> http://www.postgresql.org/docs/8.4/static/functions-matching.html#FUNCTIONS-POSIX-REGEXP
> 
> 
> -- 
>   Euler Taveira de Oliveira
>   http://www.timbira.com/
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
> 
> 

-- 
View this message in context: 
http://www.nabble.com/TSearch-palavar-Inicial-tp24035502p24042073.html
Sent from the PostgreSQL - Brasil mailing list archive at Nabble.com.

_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a