Bagaimana untuk Mengira Jarak Levenshtein dengan Cekap dalam MySQL dan PHP?

Barbara Streisand
Lepaskan: 2024-11-14 17:57:02
asal
519 orang telah melayarinya

How to Calculate Levenshtein Distance Efficiently in MySQL and PHP?

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'];
    }
}
Salin selepas log masuk

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";
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan