>백엔드 개발 >PHP 튜토리얼 >MySQL과 PHP에서 Levenshtein 거리를 효율적으로 계산하는 방법은 무엇입니까?

MySQL과 PHP에서 Levenshtein 거리를 효율적으로 계산하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-14 17:57:02582검색

How to Calculate Levenshtein Distance Efficiently in MySQL and PHP?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.