On 10-07-2013 10:23, Pablo Sánchez wrote:
> Até o momento, tudo quase ok (tirando o fato de que não é para idiomas
> latinos, mas já é algo). Só que fiquei com dúvida sobre qual seria um
> bom valor para o índice Levenshtein. Estou extremamente compelido pelo
> índice 3, mas gostaria de opiniões.
>
Não existe índice bom ou ruim; tudo depende de (i) seus dados e (ii) o
quão flexível você quer ser. Faça bastante testes em uma "baseline" e
decida qual é o ideal.
> Eis um exemplo de teste que mostrou-se satisfatório
>
> select soundex('Josefa Silva'), soundex('Joseph Silva');
> select levenshtein('Josefa Silva', 'Joseph Silva');
> select metaphone('Josefa Silva', 10), metaphone('Joseph Silva', 10);
> select dmetaphone('Josefa Silva'), dmetaphone('Joseph Silva');
> select dmetaphone_alt('Josefa Silva'), dmetaphone_alt('Joseph Silva');
>
Eu não aconselharia utilizar qualquer dessas funções em nomes completos.
O soundex, por exemplo, considera somente algumas posições (no mínimo 4
caracteres). O levenshtein utilizado com strings longas podem ter mais
do que 3 ou 4 mudanças. Ao invés disso, quebre o nome completo em nome e
sobrenome e faça uma comparação individual ou utilize uma composição de
funções de similaridade.
Se você quer usar funções por similaridade, eu aconselho dar uma olhada
no pg_similarity [1]. Ele contém uma série de funções que podem te
auxiliar na tarefa de casamento flexível de strings.
[1] https://github.com/eulerto/pg_similarity
--
Euler Taveira Timbira - http://www.timbira.com.br/
PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral