안녕하세요.
OpenLDAP에서 유사어 검색이 가능한데 이 유사어 검색에 대한 정보가
부족한거 같아서 약간의 정보를 모아서 올립니다.
OpenLDAP는 두가지의 Phonetic algorithm을 지원합니다.
지원하는 두가지의 알고리즘은 soundex알고리즘과 metaphone알고리즘입니다.
이 두가지중 한가지 알고리즘의 선택이 ldap빌드시에 일어나는데 디폴트로
metaphone알고리즘이 선택되고 만일 configure스크립트에 --enable-phonetic옵션을
주게되면 soundex알고리즘이 선택이됩니다.
유사어 검색은 영어를 비롯하여 미국에서 많이 쓰이는 외국어(불어같은..)에
대해서만 작동하는 알고리즘입니다. 일반적으로 soundex알고리즘이 metaphone보다
먼저 나왔고 그래서 인지 metaphone보다 매칭확률이 좀 떨어진다고 합니다.
알고리즘에 대해서 간단히 얘기해 보면 두 알고리즘 모두 단어의 첫 몇개의 자음
만을 취해서 비슷한 소리가 날수 있는 단어를 선택하여 리턴해 주게됩니다.
예를 들어 cora라는 여자이름을 검색한다면 이것과 비슷한 발음이 나는 kora,cora,
korie 등등의 여자이름을 데이터베이스에서 찾아서 리턴합니다.
알고리즘에 대한 자세한 설명은
http://www.cuj.com/articles/2000/0006/0006d/0006d.htm?topic=articles (double metaphone)
http://www.outfitters.com/genealogy/what-soundex.html
에서 읽어보실수 있습니다.
그리고 이에 해당하는 ldap함수는 소스의 servers/slapd/phonetic.c 파일에
두가지 soundex와 metaphone의 phonetic()함수가 있으니 참고하세요.
그리고 metaphone알고리즘은 두가지 metaphone알고리즘과 double metaphone알고리즘이
있으나 OpenLDAP에는 고전 metaphone알고리즘을 사용했더군요.
여기까지 글들을 대충 읽어보고는 위 phonetic()함수를 하나더 추가하여 한글의
유사어 검색이 가능하게 했으면 해서 다시 인터넷 여기저기를 한글의 유사어
검색 알고리즘이 있는지 찾아봤는데 찾기가 힘들군요.
우리나라는 왜이렇게 정보의 인캡슐레이션이 잘될까요? ^^
(제가 잘 못찾아서 그럴수도 있겠지만...)
항상 제가 느끼는 거라서...
그럼 즐거운 하루보내세요.
|