> 데이터 베이스 > MySQL 튜토리얼 > PHP 및 MySQL에서 회사 이름에 대해 효율적인 퍼지 일치를 구현하려면 어떻게 해야 합니까?

PHP 및 MySQL에서 회사 이름에 대해 효율적인 퍼지 일치를 구현하려면 어떻게 해야 합니까?

Susan Sarandon
풀어 주다: 2024-12-06 02:56:09
원래의
622명이 탐색했습니다.

How Can I Implement Efficient Fuzzy Matching for Company Names in PHP and MySQL?

PHP 및 MySQL을 사용한 자동 완성 입력을 위한 퍼지 일치 회사 이름

사용자는 종종 광범위한 회사 이름 목록을 가져오므로 지연이 발생할 수 있습니다. 데이터베이스 크기 증가로 인해 직접 문자열 일치를 사용합니다. 이 프로세스를 최적화하고 사용자가 입력할 때 실시간 제안을 제공하려면 보다 효율적인 접근 방식이 필요합니다.

Soundex를 사용한 퍼지 매칭

한 가지 잠재적인 솔루션은 회사를 색인화하는 것입니다. SOUNDEX() 함수를 사용하여 이름을 지정합니다. 이 함수는 문자열을 음성 표현으로 변환하여 비슷한 소리의 이름을 효과적으로 그룹화합니다. SOUNDEX는 상대적으로 빠르지만 다음과 같은 제한 사항이 있습니다.

  • 처음 몇 글자를 강조하므로 긴 문자열에 대해 잘못된 일치가 발생할 수 있습니다.
  • 이름의 첫 글자가 필요합니다. 동일하므로 첫 글자가 다른 회사의 경우 정확성이 제한됩니다.
  • 라틴어가 아닌 언어에서는 제대로 작동하지 않을 수 있습니다.

고급 매칭을 위한 Levenshtein 거리

보다 정확한 퍼지 매칭을 위해서는 편집(삽입, 삭제) 횟수를 측정하는 Levenshtein 거리를 고려하세요. 또는 대체) 한 문자열을 다른 문자열로 변환하는 데 필요합니다. 이를 통해 유연성이 향상되지만 계산 비용이 더 많이 듭니다.

최적의 결과를 위한 접근 방식 결합

특정 요구 사항에 따라 초기 자동 실행에 SOUNDEX를 사용할 수도 있습니다. 더 세련된 일치를 위해 제안을 완료하고 Levenshtein 거리로 돌아갑니다. 이 하이브리드 접근 방식은 속도와 정확성 사이의 균형을 제공합니다.

PHP의 사용 예

// Calculate Soundex code for company names
$stmt = $mysqli->prepare("SELECT company_id, SOUNDEX(name) FROM companies");
$stmt->execute();
$result = $stmt->get_result();

// Get user input and convert to Soundex
$userInput = "Microsift";
$userInputSoundex = soundex($userInput);

// Query for matching company IDs
$stmt = $mysqli->prepare("SELECT company_id FROM companies WHERE SOUNDEX(name) = ?");
$stmt->bind_param("s", $userInputSoundex);
$stmt->execute();
$result = $stmt->get_result();

// Further refine results using Levenshtein distance (optional)
while ($row = $result->fetch_assoc()) {
    $companyId = $row['company_id'];
    $levenshteinDistance = levenshtein($userInput, $row['name']);

    if ($levenshteinDistance < 3) {
        // Consider as a match
    }
}
로그인 후 복사

이러한 기술을 활용하면 매우 효과적인 퍼지 일치 시스템을 구현할 수 있습니다. 사용자 경험을 향상시키고 데이터베이스 성능을 최적화합니다.

위 내용은 PHP 및 MySQL에서 회사 이름에 대해 효율적인 퍼지 일치를 구현하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿