Heim > Datenbank > MySQL-Tutorial > Wie implementiert man eine Levenshtein-Distanzfunktion in MySQL?

Wie implementiert man eine Levenshtein-Distanzfunktion in MySQL?

Mary-Kate Olsen
Freigeben: 2024-12-27 15:05:10
Original
742 Leute haben es durchsucht

How to Implement a Levenshtein Distance Function in MySQL?

Levenshtein-Funktion zu MySQL hinzufügen

In MySQL erfordert das Hinzufügen einer benutzerdefinierten Funktion wie der Levenshtein-Distanz die Erstellung einer gespeicherten Prozedur oder Funktion. Sie können jedoch den im verwiesenen WordPress-Beitrag bereitgestellten Code nutzen, indem Sie die folgenden Schritte ausführen:

  1. Mit MySQL verbinden: Stellen Sie mit Ihrer bevorzugten Methode eine Verbindung zu Ihrem MySQL-Server her (z. B. , Befehlszeile, MySQL Workbench).
  2. Erstellen Sie die gespeicherte Funktion: Führen Sie die folgende Anweisung in Ihrem SQL aus Editor:
DELIMITER $$
CREATE FUNCTION levenshtein(str1 VARCHAR(255), str2 VARCHAR(255))
  RETURNS INT
  DETERMINISTIC
BEGIN
  DECLARE str1len, str2len, i, j, cost, c, vtemp INT;
  DECLARE vmatrix VARCHAR(255);

  CALL max(length(str1), length(str2), str1len, str2len);

  SET vtemp = power(2, str2len) * power(2, str1len);
  SET vmatrix = LPAD('0', vtemp, '0');

  SET i = 1;
  WHILE i <= str1len DO
    SET t = SUBSTR(str1, i, 1);
    SET j = 1;
    WHILE j <= str2len DO
      SET s = SUBSTR(str2, j, 1);

      IF i = 1 THEN
        CALL min3(j, vmatrix, i * j, j + 1);
      END IF;
      IF j = 1 THEN
        CALL min3(i, vmatrix, i, i * str2len + j);
      END IF;

      SET cost = IF(t = s, 0, 1);
      CALL min3(vmatrix, vmatrix, cost + vmatrix, i * str2len + j);

      CALL min3(i, vmatrix, vmatrix, i * str2len + j + 1);
      CALL min3(j, vmatrix, vmatrix, (i + 1) * str2len + j);

      SET j = j + 1;
    END WHILE;
  SET i = i + 1;
END WHILE;

  RETURN vmatrix;
END
$$
DELIMITER ;
Nach dem Login kopieren
  1. Funktion testen: Sie können nun die folgende Abfrage ausführen, um die Levenshtein-Distanzfunktion zu testen:
SELECT levenshtein('abcde', 'abced');
Nach dem Login kopieren

Beispiel:

Die Abfrage gibt 2 zurück und bestätigt dies Der Levenshtein-Abstand zwischen „abcde“ und „abced“ beträgt 2.

Verwendung in PHP:

Um die Levenshtein-Funktion in PHP beim Herstellen einer Verbindung mit MySQL zu verwenden, können Sie diese ausführen den folgenden Code:

$sql = 'SELECT levenshtein(?, ?) AS distance';
$stmt = $conn->prepare($sql);
$stmt->bind_param('ss', $str1, $str2);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
  $distance = $row['distance'];
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie implementiert man eine Levenshtein-Distanzfunktion in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage