背景: 大規模な人のデータベースがあり、重複を探したいのですが、これは思ったよりも困難です。私はすでに、名前 (綴りが異なることが多い) や生年月日などを比較しています。2 つのプロファイルがマッチング アルゴリズムに十分に類似していると思われる場合、それらはオペレーターに提示され、オペレーターが判断します。
ほとんどのプロファイルには複数の電話番号が添付されているため、それらを使用して重複を見つけたいと考えています。それらは「001-555-123456」として入力できますが、「555-123456」、「555-123456-7-8」、「555-123456 call me in the evening」など、想像できるものなら何でも入力できます。私の最初のアイデアは、すべての非数値文字を取り除き、「最長の共通部分文字列」を取得することです。セット内の最長の共通部分文字列を見つけるアルゴリズムはたくさんあります。しかし、2 つのプロファイル A と B を比較すると、電話番号が 2 セットあります。セット A の文字列とセット B の文字列の間で最も長い部分文字列を見つけたいのですが、そのようなアルゴリズムを見つけるのを手伝ってくれませんか? 私は通常、PHP でプログラミングします。SQL のみのソリューションはさらに優れていますが、他の言語でも問題ありません。