[MYSQL/MS-SQL] FULL TEXT SEARCH 간단히 정리
페이지 정보
작성자 오원장쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글 0건 조회 5,130회 작성일 12-02-28 13:08본문
[MS-SQL]
SELECT * FROM 테이블
WHERE CONTAINS(필드, '"검색어1" and "검색어2" and not "제외검색어" ');
[MYSQL]
SELECT * FROM 테이블
WHERE MATCH(필드) AGAINST("+검색어1 +검색어2 -제외검색어", IN BOOLEAN MODE);
MS-SQL과 MYSQL은 FULL TEXT를 지원합니다.
DB마다 약간의 차이가 있으면 100% 정확하지는 않다는 점을 알기 바랍니다.
1. 실제로 한 경우가 아닌 오류의 예입니다.
[MSSQL]
MSSQL은 검색어1, 검색어2, 제외검색어를 검색시 검색어를 임의로 분리 검색해서 처리합니다.
전문용어로 형태소 분석처리를 합니다. 그래서 에러가 발생하기도 합니다.
"MB대통령" 을 검색어로 검색하는 경우와
"대통령" 을 검색어로 검색하는 경우
"대통령께서" 을 검색어로 검색하는 경우 결과값이 같을수 있습니다.
"대통령" 만 검색해서 나오기때문입니다.
<== 나름 검색어를 넣고 테스트를 해 보면 비교적 정확하게 잘 나옵니다.
[MYSQL]
MYSQL은 검색어의 길이를 설정할수가 있습니다.
저는 2~10자의 검색어만 만들도록 설정해서 테스트를 했습니다.
"MB대통령" 을 검색어로 검색하는 경우와
"대통령" 을 검색어로 검색하는 경우
"대통령께서" 을 검색어로 검색하는 경우는 ?
이렇게 하면 첫번째의 경우(MB대통령)는 대통령으로 검색이 안 됩니다.
MB대통령 또는 MB*로 검색이 됩니다.
MYSQL의 경우는 검색어 앞에 +는 꼭 있어야 하는 단어 (단어 앞에 표시)
-는 없어야 하는 단어 (단어 뒤에 표시)
*는 like검색의 %와 동일 (단어 뒤에 표시)
색인단어는 임의로 DB에서 알아서 처리하기때문에 색인단어를 알수가 없습니다.
그래서 대통령이 색인단어에 포함이 안 되면 대통령으로 전부 검색이 안 될수도 있습니다.
이 경우 *를 이용한 대통령* 이렇게 검색을 하면 대통령으로 시작되는 글은 전부 검색이 됩니다.
다만 노무현대통령, 김대중대통령, 이명박대통령 등 이런경우는 대통령*으로 검색이 안 됩니다.
단순히 노무현으로 시작하던가 김대중, 이명박으로 시작하는 검색어로 검색을 해야 됩니다.
노무현* 김대중* 이명* 이렇게 해야 됩니다.
참고하세요.
댓글목록
등록된 댓글이 없습니다.