이 함수의 출발은 몇해전 hcode 기반 변형 함수를 만들었던 것에서 시작합니다.
기억하지 못하는 분들과 전혀 모르는 분들을 위해서 잠시 설명드리면,
인명정보에 '제프백' 이 있는데, 사용자가 '재프백'으로 검색해도 검색할 수 있도록 하는 것이 목표였습니다.
한글에 대해서만 처리를 했으며, 공백이나 기타 특수 기호들에 대해서는 전혀 건드리지 않습니다.
검색이 목적인지라, 처음부터 1024byte 까지만의 문자열을 대상으로 처리합니다.
옛 버전이 euc-kr 기반이어서 이번에 utf-8 기반으로 바꾸었습니다.
즉, 데이터베이스 인코딩이 unicode 여야지 아래처럼 사용할 수 있습니다.
그냥 ascii 이거나, euc-kr 이면, convert 함수를 통해서 soundexko() 함수로 넘겨줄 인자를 미리 utf-8 인코딩으로 변경하셔야합니다.
사용방법은 다음과 같습니다.
mydb=# select * from t;
no | name | phone
----+--------+----------
1 | 김혜은 | 123-1234
2 | 신기배 | :)
3 | 코엑스 | 222-1234
4 | 왜관 | 999-1111
(4건 있음)
작업시간: 1.767 ms
mydb=# select * from t where soundexko(name) ~ soundexko('꼬엑스');
no | name | phone
----+--------+----------
3 | 코엑스 | 222-1234
(1건 있음)
작업시간: 2.541 ms
mydb=# select * from t where soundexko(name) ~ soundexko('기베');
no | name | phone
----+--------+-------
2 | 신기배 | :)
(1건 있음)
작업시간: 2.468 ms
mydb=# select * from t where soundexko(name) ~ soundexko('해은');
no | name | phone
----+--------+----------
1 | 김혜은 | 123-1234
(1건 있음)
작업시간: 2.270 ms
mydb=# select * from t where soundexko(name) ~ soundexko('외간');
no | name | phone
----+------+----------
4 | 왜관 | 999-1111
(1건 있음)
작업시간: 2.465 ms
첨부된 dll 파일은 win32 용입니다. pgsql lib 디렉토리안에 옮겨두고, 여느 함수 등록하듯이 등록하고 사용하면 됩니다. |