0

퍼지 문자열 일치에 사용될 때 SQL SOUNDEX 함수의 내결함성을 높이는 방법이 있습니까? 저는 이것을 사용하여 공급자 이름을 검색합니다. 내가 가지고있는 것 :퍼지 문자열 일치에 대한 SQL Soundex의 내결함성 향상

WHERE 
    SOUNDEX(@SearchTerm) = SOUNDEX(s.Name) 

이것은 어느 정도는 작동하지만 약간의 내결함성을 증가시키고 싶습니다. 예를 들면 다음과 같습니다.

SOUNDEX('test') = T230 
SOUNDEX('tet') = T300 
SOUNDEX('tets') = T320 
SOUNDEX('tes') = T200 

이상적으로이 모든 예제를 일치 시키려합니다. 나는 원래

SOUNDEX('test supplier') = T230 
SOUNDEX('supplier') = S146 

: 또한, 약간의 문제는 공급 업체의 이름이 개 단어와 두 번째 단어에 의해 사용자의 검색 구성 할 때, 이것은 분명히 행진이 단어의 첫 글자에 의존하기 때문에 일 것이다 다양한 근사 문자열 비교 알고리즘을 사용하는 웹 응용 프로그램에서 퍼지 문자열 비교 라이브러리를 사용하고 있었지만, 20 명이 동시에 5000 개 이상의 공급 업체를 검색 할 때 웹 서버가 처리하기에는 너무 많은 것으로 나타났습니다. 지금은 데이터베이스가 검색된 결과 만 반환하고 검색 할 공급 업체의 전체 목록은 반환하지 않도록 저장 프로 시저에서이 작업을 시도하고 있습니다.

답변

1

SQL CLR integration을 사용하여 UDF를 구현하고 서버에 배포 할 수 있습니다. (더 spceifically : CLR Scalar-Valued Functions)

나는 똑같은 일을하고 350.000 개가 넘는 행 (다른 필터없이)을보고 정말 빠르게 작동하기 때문에이 기능이 작동합니다. 이것은 Damerau-Leventshein 알고리즘의 변형이므로 시간이 많이 걸리는 알고리즘입니다.

모든 행을 앱에 반환하고 앱 측에서 필터링하고 SQL Server 내에서 직접 필터링하는 것의 차이는 매우 큽니다.

관련 문제