2016-12-11 13 views
1

다른 소스의 데이터에 조인하려고합니다. 가입 할 수있는 유일한 필드는 주소입니다. 표 1에서 주소는 거리와 주 사이의 추가 데이터 (근처를 나타냄)를가집니다. 가장 유사한 주소를 사용하여 이러한 테이블에 가입 할 수있는 방법이 있습니까? 85,000 개의 주소가 있으므로 LIKE 및 와일드 카드를 사용한 수동 검색이 작동하지 않습니다.PostgreSQL이 유사한 주소로 결합합니다.

표 1
"239 더들리 성 더들리 스퀘어 록스 베리 MA 02119"
"539 더들리 성 더들리 스퀘어 록스 베리 MA 02119"

표 2
"239 더들리 성 록스 베리 MA 02119"
"539 더들리 세인트 록스 베리의 석사 02119"

답변

0

나는이 개 제안이 있습니다

1) "테이블이 주소의 모든 단어를 표 1 추가에 존재를 RESS "

select * 
from t1 join 
    t2 on (string_to_array(t2.address,' ') <@ string_to_array(t1.address,' ')); 

2)"

select distinct on(t1.address) * 
from t1 cross join t2 
order by t1.address, similarity(t1.address, t2.address) desc; 
각 테이블에 1 주소 테이블 2 "에서 가장 유사한 주소를 찾을 수