MySQL에서 Levenshtein 함수를 구현하는 방법
문자열 유사성 비교를 용이하게 하기 위해 Levenshtein 함수를 MySQL 데이터베이스에 통합하려고 합니다. . 이를 달성하는 방법에 대한 단계별 가이드는 다음과 같습니다.
언급한 대로 여기에서 Levenshtein 거리 함수에 대한 코드를 얻을 수 있습니다. 코드가 있으면 다음 단계를 진행하세요.
다음을 사용하여 MySQL 서버에 연결 설정 MySQL Workbench와 같이 선호하는 방법을 사용하세요.
다음 문을 실행하여 MySQL 데이터베이스 내에 Levenshtein 함수를 생성하세요.
CREATE FUNCTION levenshtein(a VARCHAR(255), b VARCHAR(255)) RETURNS SMALLINT DETERMINISTIC BEGIN DECLARE i, j, s VARCHAR(255), costs VARCHAR(255); DECLARE c, mina, minb, napi, napj, cost_a, cost_b, di, dj, new COSTTYPE[]; SET s = REPEAT(' ',LENGTH(b)+2); SET costs = REPEAT(' ',(LENGTH(b)+2) * (LENGTH(a)+2)); SET c = 1; WHILE c <= LENGTH(a) DO SET new = costs + 1; SET mina = c + 1; SET i = 1; WHILE i <= LENGTH(b) DO SET napj = costs + (i * 2) + 1; SET di = CHAR_LENGTH(SUBSTR(a,c,1)); SET dj = CHAR_LENGTH(SUBSTR(b,i,1)); SET napj = costs + (i * 2) + 2; IF di = dj AND di > 0 AND dj > 0 THEN IF di > 1 AND di < 127 AND dj > 1 AND dj < 127 AND (di-dj=-1 OR di-dj=1) AND SUBSTR(a,c,1) = SUBSTR(b,i,1) THEN SET napi = costs + 2; ELSE SET napi = costs + (i * 2) + 3; END IF; ELSE SET napi = costs + 2; END IF; SET cost_a = napj - mina; SET cost_b = napi - napj; SET mina = new + (i * 2) + 1; SET minb = napi + 1; IF cost_a < cost_b AND cost_a < mina THEN SET c = di + 1; SET costs = new; ELSEIF cost_b < mina THEN SET di = dj + 1; SET costs = new; ELSE SET mina = new + (i * 2) + 1; END IF; SET napj = mina; SET mina = napi; SET i = i + 1; END WHILE; SET c = c + 1; END WHILE; RETURN napj - mina; END;
성공적으로 함수가 생성된 것을 확인할 수 있습니다. 쿼리하여:
SHOW FUNCTION STATUS WHERE name = 'levenshtein'
Levenshtein 함수를 사용하려면 쿼리에서 이를 참조하면 됩니다. 예를 들어 문자열 'abcde'와 'abced' 사이의 Levenshtein 거리를 계산하려면 다음 쿼리를 사용합니다.
SELECT levenshtein('abcde', 'abced')
이 쿼리는 결과 2를 반환하며, 이는 문자열 사이의 Levenshtein 거리를 나타냅니다. 두 개의 문자열.
PHP에서 Levenshtein 함수를 활용하려면 코드에서 MySQL 쿼리를 실행할 수 있습니다. 예:
$mysqli = new mysqli('localhost', 'username', 'password', 'database'); $query = "SELECT levenshtein('abcde', 'abced')"; $result = $mysqli->query($query); while ($row = $result->fetch_assoc()) { echo $row['levenshtein']; }
이 코드 조각은 MySQL 데이터베이스에 연결하고, 지정된 쿼리를 실행하고, 데이터베이스에서 반환된 Levenshtein 거리를 인쇄합니다.
위 내용은 MySQL에서 Levenshtein 함수를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!