MySQL へのレーベンシュタイン距離関数の追加
レーベンシュタイン距離関数を MySQL に組み込むには、MySQL ワークベンチに移動して次のステートメントを実行します。 :
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 インスタンスの levenshtein() 関数。
PHP での使用例
PHP で関数を使用するには、MySQL データベースに接続し、levenshtein を使用してクエリを実行します。 () function:
<?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」と「abced」の間のレーベンシュタイン距離は 2 です。
以上がMySQL でレーベンシュタイン距離関数を追加して使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。