Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengira Jarak Levenshtein dengan Cekap dalam MySQL dan PHP?

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

Barbara Streisand
Barbara Streisandasal
2024-11-14 17:57:02578semak imbas

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'];
    }
}

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!

Kenyataan:
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