首頁 >後端開發 >php教程 >如何在 MySQL 和 PHP 中有效率地計算編輯距離?

如何在 MySQL 和 PHP 中有效率地計算編輯距離?

Barbara Streisand
Barbara Streisand原創
2024-11-14 17:57:02582瀏覽

How to Calculate Levenshtein Distance Efficiently in MySQL and PHP?

MySQL 和 PHP 中的編輯距離計算

編輯距離是衡量兩個字串之間相似性的常用指標。它適用於各種場景,特別是拼字檢查和搜尋引擎。本文探討如何使用 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() 函數。此函數計算兩個字串之間的編輯距離,無需 PHP 執行這些計算。

$word = mysql_real_escape_string($word);
$query = "SELECT `term` FROM `words` WHERE LEVENSHTEIN('$word', `term`) BETWEEN 0 AND 4";

此查詢會擷取與給定術語的編輯距離在指定範圍內 (0-4) 的所有術語在這種情況下)。透過執行這個單一查詢,您可以獲得所需的結果,而無需多個資料庫查詢和 PHP 計算的開銷。

以上是如何在 MySQL 和 PHP 中有效率地計算編輯距離?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn