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中文網其他相關文章!