Vou tentar explicar. 
Primeiro tentei pesquisar no recorte inteiro, da seguinte forma:
 
select set_limit(0.65);
 
select item from recortes where id_pesquisa = 1327
and texto_recorte <-> 'Maria Silva Rodrigues';
 
Porém, como estou comparando 24 caracteres com 3500, a similaridade é bem 
pequena, e se o recorte tiver 5000 caracteres, ja terei outro numero bem 
diferente.
 
Entao fiz o seguinte: crie um dicionario por recortes. O dicionário contém 
janelas com 1, 2, 3, 4 e 5 palavras. A tabela contém a seguinte estrutura 
(resumido):
 
CREATE TABLE recortes_dic (
  * id_pesquisa integer not null,
  * item integer not null,
  * qtde_palavras smallint not null,
  * posicao smallint not null,
  texto text not null)
 
CREATE INDEX recortes_dic_idx1 ON public.recortes_dic_dic
  USING gin (id_pesquisa public.int4_ops, qtde_palavras public.int2_ops, texto 
COLLATE pg_catalog."default" public.gin_trgm_ops);
 
Em uma pesquisa, que corresponde a um jornal grande, o dicionario teve um 
conjunto de 9.000.000 de registros.
 
Segue explain:
(select set_limit(0.5);)
 
select item from recortes_dic x
where x.id_pesquisa = 16090
and x.qtde_palavras = 3
and x.texto % 'adriano none oliveira'

Bitmap Heap Scan on recortes_dic x  (cost=416.06..27163.72 rows=1330 width=25)
  Recheck Cond: ((id_pesquisa = 16090) AND (texto % 'adriano none 
oliveira'::text))
  Filter: (qtde_palavras = 3)
  ->  Bitmap Index Scan on recortes_dic_idx1  (cost=0.00..415.73 rows=9173 
width=0)
        Index Cond: ((id_pesquisa = 16090) AND (texto % 'adriano none 
oliveira'::text))
 
O tempo de retorno foi de 7s na primeira vez após reiniciar o pg, e 6,5s na 
sequência. Ainda não fiz os testes por completo. Mas se demorar em média 3s por 
nome, então terei o seguinte: 3 * 1000 nomes = 3000s / 60 = 50 minutos. Isso 
vezes 5-7 jornais por dia, é muito tempo.
 
Ainda vou melhorar os testes, fazer com todos os clientes pra ver qual será o 
tempo total. Deve ser menor por conta do cache do banco de dados.
 
A maquina de teste é o meu notebook, e não está otimizada, nem mesmo parametros 
de memoria.
 
Espero que esteja mais claro. Valeu pela atenção.
 

>________________________________
> De: Euler Taveira <eu...@timbira.com>
>Para: Comunidade PostgreSQL Brasileira <pgbr-geral@listas.postgresql.org.br> 
>Enviadas: Sexta-feira, 1 de Junho de 2012 5:27
>Assunto: Re: [pgbr-geral] Busca textual
>  
>On 31-05-2012 19:03, Jean Domingues wrote:
>> Ate agora,  em meus testes, o desempenho é bem precário. Se alguem
>> tem alguma experiencia em busca textual e similaridade no postgresql, e puder
>> me dar alguma dica, ficarei grato.
>>  
>O que é precário? A qualidade? O tempo de resposta? Você não apresentou
>detalhes sobre o problema. Consultas, planos e configurações para que possamos
>te ajudar.
>
>
>-- 
>   Euler Taveira de Oliveira - Timbira      http://www.timbira.com.br/
>   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
>_______________________________________________
>pgbr-geral mailing list
>pgbr-geral@listas.postgresql.org.br
>https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
>   
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a