Heim > Datenbank > MySQL-Tutorial > Wie implementiert man die Levenshtein-Funktion in MySQL?

Wie implementiert man die Levenshtein-Funktion in MySQL?

Barbara Streisand
Freigeben: 2024-12-07 16:49:16
Original
1007 Leute haben es durchsucht

How to Implement the Levenshtein Function in MySQL?

So implementieren Sie die Levenshtein-Funktion in MySQL

Sie möchten die Levenshtein-Funktion in Ihre MySQL-Datenbank integrieren, um Vergleiche der Zeichenfolgenähnlichkeit zu erleichtern . Hier ist eine Schritt-für-Schritt-Anleitung, wie Sie dies erreichen:

Wie bereits erwähnt, können Sie den Code für die Levenshtein-Distanzfunktion hier erwerben. Sobald Sie den Code haben, fahren Sie mit den folgenden Schritten fort:

  1. Verbinden Sie sich mit Ihrem MySQL-Server:

Stellen Sie eine Verbindung mit Ihrem MySQL-Server her Ihre bevorzugte Methode, z. B. MySQL Workbench.

  1. Führen Sie die CREATE FUNCTION aus Anweisung:

Führen Sie die folgende Anweisung aus, um die Levenshtein-Funktion in Ihrer MySQL-Datenbank zu erstellen:

CREATE FUNCTION levenshtein(a VARCHAR(255), b VARCHAR(255)) RETURNS SMALLINT DETERMINISTIC
BEGIN
  DECLARE i, j, s VARCHAR(255), costs VARCHAR(255);
  DECLARE c, mina, minb, napi, napj, cost_a, cost_b, di, dj, new COSTTYPE[];
  
  SET s = REPEAT(' ',LENGTH(b)+2);
  SET costs = REPEAT(' ',(LENGTH(b)+2) * (LENGTH(a)+2));
  SET c = 1;
  WHILE c <= LENGTH(a) DO
    SET new = costs + 1;
    SET mina = c + 1;
    SET i = 1;
    WHILE i <= LENGTH(b) DO
      SET napj = costs + (i * 2) + 1;
      SET di = CHAR_LENGTH(SUBSTR(a,c,1));
      SET dj = CHAR_LENGTH(SUBSTR(b,i,1));
      SET napj = costs + (i * 2) + 2;
      IF di = dj AND di > 0 AND dj > 0 THEN
        IF di > 1 AND di < 127 AND dj > 1 AND dj < 127 AND (di-dj=-1 OR di-dj=1) AND SUBSTR(a,c,1) = SUBSTR(b,i,1) THEN
          SET napi = costs + 2;
        ELSE
          SET napi = costs + (i * 2) + 3;
        END IF;
      ELSE
        SET napi = costs + 2;
      END IF;
      
      SET cost_a = napj - mina;
      SET cost_b = napi - napj;
      
      SET mina = new + (i * 2) + 1;
      SET minb = napi + 1;
      
      IF cost_a < cost_b AND cost_a < mina THEN
        SET c = di + 1;
        SET costs = new;
      ELSEIF cost_b < mina THEN
        SET di = dj + 1;
        SET costs = new;
      ELSE
        SET mina = new + (i * 2) + 1;
      END IF;
      SET napj = mina;
      SET mina = napi;
      SET i = i + 1;
    END WHILE;
    SET c = c + 1;
  END WHILE;
  
  RETURN napj - mina;
END;
Nach dem Login kopieren
  1. Funktionserstellung überprüfen:

Sie können bestätigen, dass die Funktion erfolgreich erstellt wurde, indem Sie nach fragen it:

SHOW FUNCTION STATUS WHERE name = 'levenshtein'
Nach dem Login kopieren
  1. Beispielverwendung:

Um die Levenshtein-Funktion zu verwenden, verweisen Sie einfach in Ihren Abfragen darauf. Um beispielsweise den Levenshtein-Abstand zwischen den Zeichenfolgen „abcde“ und „abced“ zu berechnen, würden Sie die folgende Abfrage verwenden:

SELECT levenshtein('abcde', 'abced')
Nach dem Login kopieren

Diese Abfrage gibt ein Ergebnis von 2 zurück, was den Levenshtein-Abstand zwischen den Zeichenfolgen angibt zwei Zeichenfolgen.

  1. Verwenden der Funktion in PHP:

Um die Levenshtein-Funktion in PHP zu nutzen, können Sie MySQL-Abfragen aus Ihrem Code ausführen. Zum Beispiel:

$mysqli = new mysqli('localhost', 'username', 'password', 'database');

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

while ($row = $result->fetch_assoc()) {
  echo $row['levenshtein'];  
}
Nach dem Login kopieren

Dieses Codefragment stellt eine Verbindung zu einer MySQL-Datenbank her, führt die angegebene Abfrage aus und gibt die von der Datenbank zurückgegebene Levenshtein-Distanz aus.

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

Quelle:php.cn
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