将 Levenshtein 距离函数添加到 MySQL
要将 Levenshtein 距离函数合并到 MySQL,请导航到 MySQL Workbench 并执行以下语句:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | 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() 函数执行查询:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <?php
$servername = "localhost" ;
$database = "test" ;
$username = "root" ;
$password = "password" ;
$conn = new mysqli( $servername , $username , $password , $database );
$result = $conn ->query( "SELECT levenshtein('abcde', 'abced')" );
$row = $result ->fetch_assoc();
echo $row [ 'levenshtein(s1, s2)' ];
?>
|
登录后复制
在本例中,查询返回 2,表示“abcde”和“abcde”之间的编辑距离“abced”是 2。
以上是如何在MySQL中添加和使用编辑距离函数?的详细内容。更多信息请关注PHP中文网其他相关文章!