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 サイトの他の関連記事を参照してください。