ホームページ > データベース > mysql チュートリアル > PHP と MySQL で会社名の効率的なあいまい一致を実装するにはどうすればよいですか?

PHP と MySQL で会社名の効率的なあいまい一致を実装するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-06 02:56:09
オリジナル
609 人が閲覧しました

How Can I Implement Efficient Fuzzy Matching for Company Names in PHP and MySQL?

PHP および MySQL による自動入力入力のためのあいまい一致会社名

ユーザーは多くの場合、会社名の広範なリストをインポートするため、遅延が発生する可能性がありますデータベースのサイズが増大しているため、文字列の直接一致が必要になります。このプロセスを最適化し、入力時にユーザーにリアルタイムの提案を提供するには、より効率的なアプローチが必要です。

Soundex によるファジー マッチング

考えられる解決策の 1 つは、会社のインデックスを作成することです。 SOUNDEX() 関数を使用して名前を付けます。この関数は文字列を発音表現に変換し、似た発音の名前を効果的にグループ化します。 SOUNDEX は比較的高速ですが、次のような制限があります。

  • 最初の数文字が強調されるため、長い文字列では誤一致が発生する可能性があります。
  • 名前の最初の文字が必要です。
  • ラテン語以外では正しく動作しない可能性があります。

より高度なマッチングのためのレーベンシュタイン距離

より正確なあいまいマッチングについては、編集 (挿入、削除) の数を測定するレーベンシュタイン距離を考慮してください。 、または置換) は、ある文字列を別の文字列に変換するために必要です。これにより、柔軟性が高まりますが、計算コストが高くなります。

最適な結果を得るためにアプローチを組み合わせる

特定の要件に応じて、初期自動実行に SOUNDEX を使用することもできます。提案を完了し、レーベンシュタイン距離にフォールバックして、より洗練された一致を実現します。このハイブリッド アプローチにより、速度と精度のバランスが取れます。

PHP での使用例

// Calculate Soundex code for company names
$stmt = $mysqli->prepare("SELECT company_id, SOUNDEX(name) FROM companies");
$stmt->execute();
$result = $stmt->get_result();

// Get user input and convert to Soundex
$userInput = "Microsift";
$userInputSoundex = soundex($userInput);

// Query for matching company IDs
$stmt = $mysqli->prepare("SELECT company_id FROM companies WHERE SOUNDEX(name) = ?");
$stmt->bind_param("s", $userInputSoundex);
$stmt->execute();
$result = $stmt->get_result();

// Further refine results using Levenshtein distance (optional)
while ($row = $result->fetch_assoc()) {
    $companyId = $row['company_id'];
    $levenshteinDistance = levenshtein($userInput, $row['name']);

    if ($levenshteinDistance < 3) {
        // Consider as a match
    }
}
ログイン後にコピー

これらの手法を活用することで、非常に効果的なファジー マッチング システムを実装できます。これにより、ユーザー エクスペリエンスが向上し、データベースのパフォーマンスが最適化されます。

以上がPHP と MySQL で会社名の効率的なあいまい一致を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート