Introduction:
Calculating the Levenshtein distance, a metric for string similarity, is a valuable tool in various applications. This article guides you through the process of adding the Levenshtein function to MySQL, enabling you to easily determine the similarity between strings within your database queries.
Adding the Function:
To add the Levenshtein function to MySQL, follow these steps:
Run the following SQL statement:
CREATE FUNCTION levenshtein(s1 VARCHAR(255), s2 VARCHAR(255)) RETURNS INT DETERMINISTIC BEGIN DECLARE len1 INT; DECLARE len2 INT; DECLARE i INT; DECLARE j INT; DECLARE cost INT; DECLARE min1 INT; DECLARE min2 INT; DECLARE min3 INT; SET len1 = LENGTH(s1); SET len2 = LENGTH(s2); DECLARE matrix INT[][]; SET matrix = NEW INT[len1 + 1][len2 + 1]; FOR i = 0 TO len1 DO SET matrix[i][0] = i; END FOR; FOR j = 0 TO len2 DO SET matrix[0][j] = j; END FOR; FOR i = 1 TO len1 DO FOR j = 1 TO len2 DO IF s1[i] = s2[j] THEN SET cost = 0; ELSE SET cost = 1; END IF; SET min1 = matrix[i - 1][j] + 1; SET min2 = matrix[i][j - 1] + 1; SET min3 = matrix[i - 1][j - 1] + cost; IF min1 < min2 THEN SET min2 = min1; END IF; IF min2 < min3 THEN SET min3 = min2; END IF; SET matrix[i][j] = min3; END FOR; END FOR; RETURN matrix[len1][len2]; END
Verify Function Creation: Execute a query to ensure the function has been successfully added:
SELECT levenshtein('abcde', 'abced');
You should get the expected result of 2, indicating the distance between the two strings.
The above is the detailed content of How to Add a Levenshtein Distance Function to MySQL?. For more information, please follow other related articles on the PHP Chinese website!