MySQL および PHP でのレーベンシュタイン距離の計算
レーベンシュタイン距離は、2 つの文字列間の類似性を測定するための一般的なメトリックです。特にスペル チェックや検索エンジンなど、さまざまなシナリオで応用されています。この記事では、PHP を使用して MySQL データベース内の特定の用語とすべての用語の間のレーベンシュタイン距離を計算する方法について説明します。
元の PHP 実装
提供した元の PHP コードデータベースにクエリを実行してすべての用語を取得し、PHP で各用語に対してレーベンシュタイン距離の計算を実行します。このアプローチは複数のデータベース クエリを必要とするため非効率的です。
$word = strtolower($_GET['term']); $lev = 0; $q = mysql_query("SELECT `term` FROM `words`"); while($r = mysql_fetch_assoc($q)) { $r['term'] = strtolower($r['term']); $lev = levenshtein($word, $r['term']); if($lev >= 0 && $lev < 5) { $word = $r['term']; } }
MySQL クエリの改善
効率を向上させるために、MySQL の組み込み LEVENSHTEIN() 関数を利用できます。 。この関数は 2 つの文字列間のレーベンシュタイン距離を計算し、PHP でこれらの計算を実行する必要を排除します。
$word = mysql_real_escape_string($word); $query = "SELECT `term` FROM `words` WHERE LEVENSHTEIN('$word', `term`) BETWEEN 0 AND 4";
このクエリは、指定された用語からのレーベンシュタイン距離が指定された範囲 (0 ~ 4) 内にあるすべての用語を取得します。この場合)。この 1 つのクエリを実行するだけで、複数のデータベース クエリや PHP 計算のオーバーヘッドを発生させることなく、目的の結果を得ることができます。
以上がMySQL と PHP でレーベンシュタイン距離を効率的に計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。