MySQL と PHP でレーベンシュタイン距離を効率的に計算するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-14 17:57:02
オリジナル
507 人が閲覧しました

How to Calculate Levenshtein Distance Efficiently in MySQL and PHP?

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

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