1

MySQL テーブル内の正確ではない重複を識別してマージするためのツールはありますか?

次のような多くの重複がある大規模なデータセットがあります。

1348,  Auto Motors, 12 Long Road, etc
48264, Auto Mtors,  12 Log Road,  etc
82743, Ato Motoers, 12 Lng Road,  etc
83821, Auto Motors, 13 Long Road, etc
92743, Auto Motors, 11 Long Road, etc

次のようにマージする必要があるテーブルがたくさんあります。

  • 企業
  • 住所
  • 電話番号
  • 従業員

約 100,000 行と、各行 (結合されたテーブル) で一致する 30 ~ 40 列があります。

それで、これを整理するためのツールを知っている人はいますか?私はすでにMySQL、PHPをインストールしています。MongoDBとSolrが役立つ場合は、以前に使用した/使用できます。また、必要に応じて他のソフトウェアをインストールすることにもオープンです。


または、これを処理するツールが見つからない場合は、どのような種類のクエリを実行する必要がありますか。

find all duplicatesそれらは正確ではないため、単純なものは機能しません。

ワイルドカードのような検索を行うと、さまざまな組み合わせを試す必要があり、非常に遅くなります。

Oliverまたは(MySQL)を使用するとうまくいく可能性があり、データが多すぎて PHP に取り込むことができません (これも非常に遅い可能性があります)。Levenshtein

4

2 に答える 2

3

マッサージが必要なデータがあります。これは完全にSQLでできることではないと思います。

Google Refineはマッサージに最適なツールです。最初に Refine にデータをロードし、クリーンアップしてから、リレーショナル データベースにインポートします。

于 2012-07-25T22:44:04.827 に答える
2

ワイルドカードのような検索を行うと、さまざまな組み合わせを試す必要があり、非常に遅くなります。

Oliver または Levenshtein (MySQL) を使用するとうまくいく可能性があり、データが多すぎて PHP に取り込めません (これも非常に遅い可能性があります)。

あなたはこれを事実であるかのように述べていますが、それはまさに私が提案したいことです。たとえば、1 行を php にロードします。次に、他のすべての行をループし、適切だと思われるさまざまなアルゴリズム (レーベンシュタインまたは独自のストップワード リストなど) と一致させます。実行するにはしばらく時間がかかりますが、これはおそらく、1 回限りのタスクとして、または少なくとも定期的なタスクとして実行できるものです (たとえば、1 日 1 回)。

于 2012-07-25T22:46:23.957 に答える