Daylogs/DB

MySQL: FULLTEXT 인덱스 쿼리에서 2글자 검색하기

ohgyun 2016. 12. 8. 10:53
발생일: 2016.12.07

키워드: mysql, fulltext, boolean mode, innodb_ft_min_token_size, aws

문제:
MySQL에서 BOOLEAN MODE 로 FULLTEXT 쿼리를 하려고 하는데, 검색어가 2글자인 경우 검색이 되지 않는다.


해결책:

FULLTEXT 인덱스를 생성하는 기준에 캐릭터 개수에 대한 최소값이 있었기 때문이었다.
innoDB인 경우 기본적으로 3글자, MyISAM DB인 경우 4글자가 기본값이다.

최소값 기준은 MySQL의 innodb_ft_min_token_size 설정하면 변경할 수 있다.
인스턴스의 기본 설정값이기 때문에, 값을 변경한 후엔 디비 인스턴스를 리스타트해야 하고, 인덱스도 새로 만들어야 한다고 한다.

우린 innoDB를 사용하고 있고 2글자로 변경하고 싶었기 때문에,
innodb_ft_min_token_size 값을 2로 변경해 리스타트하고 인덱스를 다시 만드는 방법으로 해결했다.


논의:

우린 AWS RDS를 사용하고 있다.
AWS에서는 AWS > RDB Dashboard > Parameter Groups 메뉴에서 사용하는 파라미터 그룹을 찾아 변경하면 된다.

난 innodb_ft_min_token_size 옵션을 검색해 2로 변경했다.

AWS에서 parameter 변경했더니 pending-reboot으로 나와서, 자동으로 리스타트되나 했는데 '설정이 다르다'는 걸 의미하는 상태라고 한다.
고정 파라미터를 변경한 것이기 때문에, DB 인스턴스를 수동으로 재부팅해주는 걸로 해결했다.


참고:

반응형