ホームページ >データベース >mysql チュートリアル >PHP 検索アプリケーション用にレーベンシュタイン関数を MySQL に統合するにはどうすればよいですか?
MySQL へのレーベンシュタイン関数のインストール
問題:
レーベンシュタイン距離関数をどのように使用できるかPHP ベースの検索で使用するために MySQL に組み込まれる
解決策:
レーベンシュタイン関数の追加
レーベンシュタイン関数を MySQL に追加するには、次の手順に従います。 MySQL ワークベンチ:
CREATE FUNCTION levenshtein(s1 VARCHAR(255), s2 VARCHAR(255)) RETURNS INT BEGIN DECLARE len1 INT; DECLARE len2 INT; DECLARE i INT; DECLARE j INT; DECLARE c INT; DECLARE cost INT; DECLARE d INT; DECLARE tmp INT; SET len1 = LENGTH(s1); SET len2 = LENGTH(s2); DECLARE matrix[len1 + 1][len2 + 1] INT; 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 d = matrix[i - 1][j] + 1; SET c = matrix[i][j - 1] + 1; SET tmp = matrix[i - 1][j - 1] + cost; IF d < c THEN IF d < tmp THEN SET matrix[i][j] = d; ELSE SET matrix[i][j] = tmp; END IF; ELSE IF c < tmp THEN SET matrix[i][j] = c; ELSE SET matrix[i][j] = tmp; END IF; END IF; END FOR; END FOR; RETURN matrix[len1][len2]; END
使用例
レーベンシュタイン関数を追加すると、次のステートメントを使用できます。 PHP では次のようになります:
$query = "SELECT levenshtein('abcde', 'abced')"; $result = mysqli_query($link, $query); $row = mysqli_fetch_array($result); echo $row['levenshtein(abcde, abced)']; // Output: 2
以上がPHP 検索アプリケーション用にレーベンシュタイン関数を MySQL に統合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。