将 Levenshtein 距离函数添加到 MySQL
要将 Levenshtein 距离函数合并到 MySQL,请导航到 MySQL Workbench 并执行以下语句:
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;
这将在您的MySQL 实例。
PHP 中的示例用法
要在 PHP 中使用该函数,请连接到 MySQL 数据库并使用 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)']; ?>
在本例中,查询返回 2,表示“abcde”和“abcde”之间的编辑距离“abced”是 2。
以上是如何在MySQL中添加和使用编辑距离函数?的详细内容。更多信息请关注PHP中文网其他相关文章!