2012-01-19 11 views
8

Tengo dos tablas que necesito fusionar en PostgreSQL, en la variable común "nombre de la empresa". Desafortunadamente, muchos de los nombres de las empresas no coinciden exactamente (es decir, MICROSOFT en una tabla, MICROSFT en la otra). Intenté eliminar palabras comunes de ambas columnas, como "corporación" o "inc" o "ltd", para intentar estandarizar los nombres en ambas tablas, pero me cuesta pensar en estrategias adicionales. ¿Algunas ideas?Corrientes difusas coincidentes

Gracias.

Además, si es necesario puedo hacer esto en R.

Respuesta

7

¿Ha considerado el módulo fuzzystrmatch? Puede usar soundex, difference, levenshtein, metaphone y dmetaphone, o una combinación.

fuzzystrmatch documentation

SELECT something 
FROM somewhere 
WHERE levenshtein(item1, item2) < Carefully_Selected_Threshold 

Por ejemplo la distancia levenshtein de MICROSOFT a MICROSOFT es uno (1).

levenshtein(dmetaphone('MICROSOFT'), dmetaphone('MICROSFT') 

Lo anterior devuelve cero (0). La combinación de levenshtein y dmetaphone podría ayudarlo a combinar muchos errores ortográficos.

+0

Considere también pg_trgm, he tenido mucho éxito en escenarios de deduplicación. – maniek

Cuestiones relacionadas