MySQL에서 지원하는 FULLTEXT 명령어는 기본적으로 구분자 기법을 사용하고 있기에 단순한 명령어만으로도 인덱싱이 가능하다.
ALTER TABLE book ADD FULLTEXT(book_name);
SQL
복사
위 명령어를 입력하면 자동으로 해당 테이블의 해당 컬럼을 기준으로 index를 생성한다.
다만 시간이 오래 걸릴 경우 workbench에서는 timeout이 일어나기에 명령 프롬프트에서 mysql에 접근해 명령어를 입력해 주어야 했다.
FULLTEXT index를 활용한 검색은 LIKE절을 사용하지 않는다. MATCH ~ AGAINST라는 FULLTEXT index를 위한 검색 명령어가 따로 존재한다.
SELECT count(*) FROM book WHERE MATCH(book_name) AGAINST('스프링');
SQL
복사
위 명령어를 통해 FULLTEXT index 검색을 활성화할 수 있다.
explain() 명령어에 위 명령어를 넣어 실행하면 fulltext index를 사용하고 있음을 볼 수 있다.
Like 구분을 사용했을 때보다 훨씬 빠른 응답을 보여주고 있다.
그러나 like 구문을 사용했을 때와는 다르게 동일한 검색어에도 다른 결과값이 나오고 있는데, 이는 구분자 기법으로 생성된 keyword가 정확히 “스프링”으로 분리되지 않았다면 이 방법으로는 찾을 수 없게 되어 일부 데이터가 감지되지 않은 것이다.
또한, 3글자 이상의 단어들만 검색이 가능하며, 2글자 이하의 단어는 검색이 되지 않는다.