2012-01-19 14 views
8

PostgreSQLで一般的な変数 "会社名"にマージする必要がある2つのテーブルがあります。残念ながら、会社名の多くは正確には一致しません(つまり、あるテーブルのMICROSOFT、他のテーブルのMICROSFT)。両方のテーブルで名前を標準化しようとすると、 "corporation"や "inc"や "ltd"などの両方の列から一般的な単語を削除しようとしましたが、追加の戦略を考えるのは難しいです。何か案は?あいまいな文字列を一致させる

ありがとうございました。また

、私はR.

答えて

7

でこれを行うことができ、必要な場合は、あなたはfuzzystrmatchモジュールを検討していますか? soundexdifferencelevenshteinmetaphonedmetaphone、またはその組み合わせを使用できます。例えば

fuzzystrmatch documentation

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

MICROSOFTへMICROSFTからレーベンシュタイン距離は1(1)です。

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

上記はゼロ(0)を返します。 levenshteinとdmetaphoneを組み合わせると、多くのスペルミスにマッチするのに役立ちます。

+0

また、pg_trgmを考慮して、私は重複排除のシナリオで多くの成功を収めました。 – maniek

関連する問題