Heim >Datenbank >MySQL-Tutorial >Wie füge ich die Levenshtein-Distanzfunktion in MySQL hinzu und verwende sie?

Wie füge ich die Levenshtein-Distanzfunktion in MySQL hinzu und verwende sie?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-13 22:42:15805Durchsuche

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

Hinzufügen der Levenshtein-Distanzfunktion zu MySQL

Um die Levenshtein-Distanzfunktion in MySQL zu integrieren, navigieren Sie zur MySQL Workbench und führen Sie die folgende Anweisung aus :

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;

Dadurch wird die Funktion levenshtein() in Ihrem MySQL erstellt Instanz.

Beispielverwendung in PHP

Um die Funktion in PHP zu verwenden, stellen Sie eine Verbindung zu Ihrer MySQL-Datenbank her und führen Sie eine Abfrage mit der Funktion levenshtein() aus:

<?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)'];

?>

In diesem Beispiel gibt die Abfrage 2 zurück, was den Levenshtein-Abstand zwischen „abcde“ und „abced“ angibt 2.

Das obige ist der detaillierte Inhalt vonWie füge ich die Levenshtein-Distanzfunktion in MySQL hinzu und verwende sie?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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