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