Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menambah dan Menggunakan Fungsi Jarak Levenshtein dalam MySQL?

Bagaimana untuk Menambah dan Menggunakan Fungsi Jarak Levenshtein dalam MySQL?

Patricia Arquette
Patricia Arquetteasal
2024-12-13 22:42:15802semak imbas

How to Add and Use the Levenshtein Distance Function in MySQL?

Menambahkan Fungsi Jarak Levenshtein pada MySQL

Untuk memasukkan fungsi jarak Levenshtein ke dalam MySQL, navigasi ke Meja Kerja MySQL dan laksanakan pernyataan berikut :

CREATE FUNCTION levenshtein(s1 VARCHAR(255), s2 VARCHAR(255)) RETURNS INT
DETERMINISTIC
BEGIN
  DECLARE len1 INT DEFAULT LENGTH(s1);
  DECLARE len2 INT DEFAULT LENGTH(s2);
  DECLARE i, j, cost, temp INT DEFAULT 0;
  DECLARE c1, c2 CHAR(1);

  IF len1 = 0 THEN
    RETURN len2;
  ELSEIF len2 = 0 THEN
    RETURN len1;
  END IF;

  SET cost = ARRAY(len1 + 1, len2 + 1);

  FOR i = 1 TO len1 DO
    SET cost[i][0] = i;
  END FOR;

  FOR j = 1 TO len2 DO
    SET cost[0][j] = j;
  END FOR;

  FOR i = 1 TO len1 DO
    c1 = SUBSTR(s1, i, 1);
    FOR j = 1 TO len2 DO
      c2 = SUBSTR(s2, j, 1);

      IF c1 = c2 THEN
        SET temp = 0;
      ELSE
        SET temp = 1;
      END IF;

      SET cost[i][j] = LEAST(cost[i - 1][j] + 1, cost[i][j - 1] + 1, cost[i - 1][j - 1] + temp);
    END FOR;
  END FOR;

  RETURN cost[len1][len2];
END;

Ini akan mewujudkan fungsi levenshtein() dalam anda Contoh MySQL.

Contoh Penggunaan dalam PHP

Untuk menggunakan fungsi dalam PHP, sambung ke pangkalan data MySQL anda dan laksanakan pertanyaan menggunakan fungsi levenshtein():

<?php

$servername = "localhost";
$database = "test";
$username = "root";
$password = "password";

// Create connection
$conn = new mysqli($servername, $username, $password, $database);

// Execute query
$result = $conn->query("SELECT levenshtein('abcde', 'abced')");

// Get result
$row = $result->fetch_assoc();

// Print result
echo $row['levenshtein(s1, s2)'];

?>

Dalam contoh ini, pertanyaan mengembalikan 2, menunjukkan jarak Levenshtein antara "abcde" dan "abced" ialah 2.

Atas ialah kandungan terperinci Bagaimana untuk Menambah dan Menggunakan Fungsi Jarak Levenshtein dalam MySQL?. 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