MySQL 및 PHP의 Levenshtein 거리 계산
Levenshtein 거리는 두 문자열 간의 유사성을 측정하는 데 널리 사용되는 측정항목입니다. 다양한 시나리오, 특히 맞춤법 검사 및 검색 엔진에서 애플리케이션을 찾습니다. 이 기사에서는 PHP를 사용하여 MySQL 데이터베이스의 특정 용어와 모든 용어 사이의 Levenshtein 거리를 계산하는 방법을 살펴봅니다.
원본 PHP 구현
귀하가 제공한 원본 PHP 코드 데이터베이스를 쿼리하여 모든 용어를 검색한 다음 PHP의 각 용어에 대해 Levenshtein 거리 계산을 수행합니다. 이 접근 방식은 여러 데이터베이스 쿼리가 필요하므로 비효율적입니다.
$word = strtolower($_GET['term']); $lev = 0; $q = mysql_query("SELECT `term` FROM `words`"); while($r = mysql_fetch_assoc($q)) { $r['term'] = strtolower($r['term']); $lev = levenshtein($word, $r['term']); if($lev >= 0 && $lev < 5) { $word = $r['term']; } }
향상된 MySQL 쿼리
효율성을 높이기 위해 MySQL에 내장된 LEVENSHTEIN() 함수를 활용할 수 있습니다. . 이 함수는 두 문자열 사이의 Levenshtein 거리를 계산하므로 PHP가 이러한 계산을 수행할 필요가 없습니다.
$word = mysql_real_escape_string($word); $query = "SELECT `term` FROM `words` WHERE LEVENSHTEIN('$word', `term`) BETWEEN 0 AND 4";
이 쿼리는 주어진 용어로부터 Levenshtein 거리가 지정된 범위(0-4) 내에 속하는 모든 용어를 검색합니다. 이 경우). 이 단일 쿼리를 실행하면 여러 데이터베이스 쿼리 및 PHP 계산의 오버헤드 없이 원하는 결과를 얻을 수 있습니다.
위 내용은 MySQL과 PHP에서 Levenshtein 거리를 효율적으로 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!