2012-01-19 14 views
8

मेरे पास दो सारणी हैं जिन्हें मुझे सामान्य चर "कंपनी नाम" पर PostgreSQL में एक साथ विलय करने की आवश्यकता है। दुर्भाग्य से कंपनी के कई नाम बिल्कुल मेल नहीं खाते हैं (यानी एक टेबल में माइक्रोसॉफ्ट, दूसरे में माइक्रोसफ्ट)। मैंने दोनों तालिकाओं में नामों को मानकीकृत करने का प्रयास करने के लिए "निगम" या "inc" या "ltd" दोनों स्तंभों से सामान्य शब्दों को हटाने का प्रयास किया है, लेकिन मुझे अतिरिक्त रणनीतियों के बारे में सोचने में परेशानी हो रही है। कोई विचार?मिलान करने वाली फ़ज़ी स्ट्रिंग्स

धन्यवाद।

इसके अलावा, आवश्यक अगर मैं आर

उत्तर

7

में यह कर सकते हैं आप fuzzystrmatch मॉड्यूल विचार किया है? आप soundex, difference, levenshtein, metaphone और dmetaphone, या संयोजन का उपयोग कर सकते हैं।

fuzzystrmatch documentation

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

उदाहरण के लिए MICROSOFTको Microsft से Levenshtein दूरी से एक है (1)।

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

उपरोक्त रिटर्न शून्य (0)। लेवेनशेटिन और डिमैटफोन का संयोजन आपको कई गलत वर्तनी से मेल खाने में मदद कर सकता है।

+0

भी pg_trgm पर विचार करें, मुझे deduplication परिदृश्य में इसके साथ बहुत सफलता मिली है। – maniek