From: | Emanuel Calvo <emanuel(dot)calvo(at)2ndquadrant(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Comparacion strings |
Date: | 2014-10-31 18:51:13 |
Message-ID: | 5453DA21.9060002@2ndquadrant.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
El 31/10/14 a las 12:54, Gustavo Rosso escibió:
>
> Buenos dias lista.
>
> Necesito escribir una función que pueda comparar dos string y sacar
> como conclusión que porcentaje de parecido tienen.
>
Se puede usar pg_trgm a través de índices GIN, te puede dar "la
distancia" entre cada.
La función es:
postgres=# select similarity_dist('emanuel', 'manuel');
similarity_dist
-----------------
0.5
(1 row)
postgres=# select similarity_dist('emanuel', 'emanuel');
similarity_dist
-----------------
0
(1 row)
0 = en el mismo lugar
1 = muy lejos
Para usar en un índice:
create index trgm_idx on test_trgm using gist (t gist_trgm_ops);
Hay una serie de ejemplos dentro del contrib (pg_trgm.sql).
El contrib de fuzzystrmatch te puede dar algunas funciones para buscar
la similaridad de palabras
(usando algoritmos de fonética):
http://www.postgresql.org/docs/current/static/fuzzystrmatch.html
> Por ej. Dos campos con apellido y nombre en uno y tal vez nombre y
> apellido en otro, siendo la misma persona.
>
Sería algo así (recuerda que es en inglés):
postgres=# select soundex('emanuel'), soundex('manuel'),
difference('emanuel','manuel');
soundex | soundex | difference
---------+---------+------------
E554 | M540 | 1
(1 row)
0 = nada parecido
4 = lo mismo
--
--
Emanuel Calvo http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda
From | Date | Subject | |
---|---|---|---|
Next Message | Ivan Perales M. | 2014-10-31 19:10:52 | Re: Campos bytea a Base64 via Webservice |
Previous Message | Edwin Quijada | 2014-10-31 18:49:30 | Campos bytea a Base64 via Webservice |