thefuzzystrmatch
모듈은 문자열 사이의 유사성과 거리를 결정하기위한 몇 가지 기능을 제공합니다.
현재,토토 꽁 머니
, Metaphone
, dmetaphone
및dmetaphone_alt
함수는 Multibyte 인코딩 (UTF-8)과 잘 작동하지 않습니다.
토토 꽁 머니 시스템은 동일한 코드로 변환하여 유사한 사운드 이름을 일치시키는 방법입니다. 1880 년, 1900 년 및 1910 년에 미국 인구 조사에 의해 처음 사용되었습니다. 토토 꽁 머니는 영어 이외의 이름에 그다지 유용하지 않습니다.
thefuzzystrmatch
모듈은 토토 꽁 머니 코드 작업을위한 두 가지 기능을 제공합니다.
토토 꽁 머니 (텍스트)는 텍스트를 반환합니다 차이 (텍스트, 텍스트) 반환 int
토토 꽁 머니
함수는 문자열을 토토 꽁 머니 코드로 변환합니다. 그만큼차이
함수는 두 줄을 Soundex 코드로 변환 한 다음 일치하는 코드 위치의 수를보고합니다. Soundex 코드에는 4 개의 문자가 있으므로 결과는 0에서 4까지이며 0은 일치하지 않고 4 개는 정확히 일치합니다. (따라서 기능의 이름이 잘못되었습니다 -유사성
더 나은 이름이었을 것입니다.)
여기에 몇 가지 사용 예가 있습니다.
SOLFONDEX ( 'Hello World!'); SONCEX ( 'Anne'), 토토 꽁 머니 ( 'ann'), 차이 ( 'Anne', 'Ann'); SONCEX ( 'Anne'), Soundex ( 'Andrew'), 차이 ( 'Anne', 'Andrew'); SONCENEX ( 'Anne'), SoundEx ( 'Margaret'), 차이 ( 'Anne', 'Margaret'); 테이블을 작성하십시오 (nm 텍스트); s 값에 삽입 ( 'John'); s 값에 삽입 ( 'joan'); s 값에 삽입 ( 'Wobbly'); s 값에 삽입 ( 'Jack'); SOONT * From S Where Soundex (NM) = 토토 꽁 머니 ( 'John'); SELECT * SELECT WHERE DIFFER (S.NM, 'John') 2;
이 함수는 두 줄 사이의 Levenshtein 거리를 계산합니다 :
levenshtein (텍스트 소스, 텍스트 대상, int ins_cost, int del_cost, int sub_cost) int를 반환합니다. Levenshtein (텍스트 소스, 텍스트 대상)은 int를 반환합니다 levenshtein_less_equal (텍스트 소스, 텍스트 대상, int ins_cost, int del_cost, int sub_cost, int max_d) int를 반환합니다. levenshtein_less_equal (텍스트 소스, 텍스트 대상, int max_d) int를 반환합니다.
둘 다소스
and대상
는 최대 255 자의 널이 아닌 문자열 일 수 있습니다. 비용 매개 변수는 각각 문자 삽입, 삭제 또는 대체에 대해 얼마나 많은 비용을 청구할지 지정합니다. 함수의 두 번째 버전에서와 같이 비용 매개 변수를 생략 할 수 있습니다. 이 경우 그들은 모두 기본적으로 1입니다.
levenshtein_less_equal
는 작은 거리 만 관심을 가질 때 사용하기위한 Levenshtein 기능의 가속 버전입니다. 실제 거리는보다 작거나 같으면max_d
,levenshtein_less_equal
올바른 거리를 반환합니다. 그렇지 않으면 값보다 큰 값을 반환합니다.max_d
. 만약에max_d
부정적이면 동작은와 동일합니다.Levenshtein
.
예 :
test =# Levenshtein ( 'gumbo', 'gambol'); Levenshtein ------------- 2 (1 줄) test =# select levenshtein ( 'gumbo', 'gambol', 2, 1, 1); Levenshtein ------------- 3 (1 줄) test =# select levenshtein_less_equal ( '광범위한', '철저한', 2); levenshtein_less_equal ------------------------- 3 (1 줄) test =# select levenshtein_less_equal ( '광범위한', '철저한', 4); levenshtein_less_equal ------------------------- 4 (1 행)
Soundex와 마찬가지로 Metaphone은 입력 문자열에 대한 대표 코드를 구성한다는 아이디어를 기반으로합니다. 그런 다음 두 줄은 동일한 코드를 가지고 있으면 비슷한 것으로 간주됩니다.
이 함수는 입력 문자열의 은유 코드를 계산합니다.
Metaphone (텍스트 소스, int max_output_length) 텍스트를 반환
소스
최대 255 자의 널이 아닌 문자열이어야합니다.max_output_length
출력 중유 코드의 최대 길이를 설정합니다. 더 길면 출력 이이 길이로 잘립니다.
예 :
test =# Metaphone ( 'Gumbo', 4); 은유 ---------- km (1 행)
이중 중유 시스템은 2를 계산합니다.“”주어진 입력 문자열에 대한 문자열 - a“기본”and an“대체”. 대부분의 경우 그것들은 동일하지만 영어가 아닌 이름의 경우 특히 발음에 따라 약간 다를 수 있습니다. 이러한 기능은 기본 및 대체 코드를 계산합니다.
dmetaphone (텍스트 소스)은 텍스트를 반환합니다 dmetaphone_alt (텍스트 소스) 텍스트를 반환
입력 문자열에는 길이 제한이 없습니다.
예 :
test =# dmetaphone ( 'gumbo'); dmetaphone ------------ KMP (1 행)