빠른 방법이 아닌 문자 비교를 기반으로 검색 할 수 있습니다. 비교가 리터럴이 아니어도 테이블 필드 간의 관계는 충분히 간단합니다. 즉, "filippo", "philippo", "filipo"등을 상관시킬 수 있어야합니다.빠른 방법은 비 문자 비교 내가 오히려 큰 데이터 세트 위에 작은 검색을 개발하고</p> <p>, 기본적으로 모든 문자열을 기반으로 검색 할
나는 내가 내 특정한 경우에 실용적입니다 확실하지 오전하지만 매우 자주, Levinstein 거리 (this, here 및 here)에 비틀 할 수있는 몇 가지 방법을 발견했다.
간단히 말해서 나는 "검색 키"가있는 작은 테이블과 검색이 수행되어야하는 더 큰 테이블이 있습니다. 두 테이블 모두 동일한 필드를 가지며 둘 다 동일한 "의미"를가집니다. 예 :
KEYS_TABLE
# | NAME | MIDNAME | SURNAME | ADDRESS | PHONE
1 | John | Fake | Doe | Sesame St. | 333-12-32
2 | Ralph | Stue | Michel | Bart. Ghost St. | 778-13000
...
및
SEARCH_TABLE
# | NAME | MIDNAME | SURNAME | ADDRESS | PHONE
...
532 | Jhon | F. | Doe | Sesame Street | 3331232
...
999 | Richard | Dalas | Doe | Sesame St. | 333-12-32
내가 운영 체제가 KEYS_TABLE
에 각각의 주어진 레코드에 대한 몇 가지 통계의 종류, 또는 순위를 얻을 수있다 싶은 것은, 보고서는 특정 관련성 위 SEARCH_TABLE
의 모든 기록은 (기준 중 하나를 정의 메트릭 또는 단순히 "KNN"과 같은 메소드).
나는 모든 행의 모든 필드에 대해 KEYS_TABLE
x SEARCH_TABLE
으로 계산해야하기 때문에 Levinstein 거리가 실용적이지 않을 수도 있습니다. SEARCH_TABLE
에 약 4 억 개의 레코드가 있고 KEYS_TABLE
이 100k에서 1mil까지 다양하다는 점을 감안하면 결과 값은 너무 큽니다.
나는 이전에 두 테이블을 풍부하게 만들 수있는 방법이 있거나, 검색을 수행하는 좀 더 단순한 (저렴한) 방법이 있기를 바랬습니다.
데이터를 자유롭게 변형 할 수 있음을 언급 할만한 가치가 있습니다. 예 : St.
~ st
, Street
~ st
을 정규화하고 특수 문자를 제거하는 식으로 진행합니다.
내 옵션은 무엇입니까? 내가 생각할 수