Pengiraan Jarak Levenshtein dalam MySQL dan PHP
Jarak Levenshtein ialah metrik popular untuk mengukur persamaan antara dua rentetan. Ia menemui aplikasi dalam pelbagai senario, terutamanya dalam semakan ejaan dan enjin carian. Artikel ini meneroka cara mengira jarak Levenshtein antara istilah tertentu dan semua istilah dalam pangkalan data MySQL menggunakan PHP.
Pelaksanaan PHP Asal
Kod PHP asal yang anda berikan menanyakan pangkalan data untuk mendapatkan semula semua istilah dan kemudian melakukan pengiraan jarak Levenshtein pada setiap istilah dalam PHP. Pendekatan ini tidak cekap kerana memerlukan berbilang pertanyaan pangkalan data.
$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']; } }
Pertanyaan MySQL yang Diperbaiki
Untuk meningkatkan kecekapan, anda boleh menggunakan fungsi LEVENSHTEIN() terbina dalam MySQL . Fungsi ini mengira jarak Levenshtein antara dua rentetan, menghapuskan keperluan untuk PHP untuk melaksanakan pengiraan ini.
$word = mysql_real_escape_string($word); $query = "SELECT `term` FROM `words` WHERE LEVENSHTEIN('$word', `term`) BETWEEN 0 AND 4";
Pertanyaan ini mendapatkan semula semua istilah yang jarak Levenshtein daripada istilah yang diberikan berada dalam julat yang ditentukan (0-4 dalam kes ini). Dengan melaksanakan pertanyaan tunggal ini, anda boleh memperoleh hasil yang diingini tanpa overhed berbilang pertanyaan pangkalan data dan pengiraan PHP.
Atas ialah kandungan terperinci Bagaimana untuk Mengira Jarak Levenshtein dengan Cekap dalam MySQL dan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!