2012-01-19 34 views
8

Tôi có hai bảng mà tôi cần hợp nhất với nhau trong PostgreSQL, trên biến chung "tên công ty". Rất tiếc, nhiều tên công ty không khớp chính xác (ví dụ: MICROSOFT trong một bảng, MICROSFT ở một bảng khác). Tôi đã thử xóa các từ phổ biến khỏi cả hai cột như "công ty" hoặc "inc" hoặc "ltd" để cố gắng chuẩn hóa tên trên cả hai bảng, nhưng tôi đang gặp khó khăn khi nghĩ đến các chiến lược bổ sung. Ý tưởng nào?Kết hợp các chuỗi mờ

Cảm ơn.

Ngoài ra, nếu cần thiết tôi có thể làm điều này trong R.

Trả lời

7

Bạn đã coi module fuzzystrmatch? Bạn có thể sử dụng soundex, difference, levenshtein, metaphonedmetaphone hoặc kết hợp.

fuzzystrmatch documentation

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

Ví dụ khoảng cách levenshtein từ MICROSOFT để Microsft là một (1).

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

Trả về số không ở trên (0). Kết hợp levenshtein và dmetaphone có thể giúp bạn kết hợp nhiều lỗi chính tả.

+0

Cũng xem xét pg_trgm, tôi đã có nhiều thành công với nó trong các trường hợp trùng lặp. – maniek

Các vấn đề liên quan