풀텍스트 검색으로 검출되는 워드의 디폴트의 최소장은 4 문자....최소 길이 값이 존재 하는가 보군요.... 아.. 이런 ㅠㅠ


[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에서 알아서 처리하기때문에 색인단어를 알수가 없습니다.

그래서 대통령이 색인단어에 포함이 안 되면 대통령으로 전부 검색이 안 될수도 있습니다.

이 경우 *를 이용한 대통령*  이렇게 검색을 하면 대통령으로 시작되는 글은 전부 검색이 됩니다.

 

다만 노무현대통령, 김대중대통령, 이명박대통령 등  이런경우는 대통령*으로 검색이 안 됩니다.

단순히 노무현으로 시작하던가 김대중, 이명박으로 시작하는 검색어로 검색을 해야 됩니다.

노무현* 김대중* 이명*   이렇게 해야 됩니다.

+ Recent posts