FULLTEXT INDEX, 검색 만들기 - 설정 방법

Recfli·2025년 2월 25일
0

프로젝트를 진행하면서 FULLTEXT INDEX를 통해서 검색을 만들 일이 있었다. Elastic Search를 사용해서 검색을 만드는 방법도 있겠지만, 별도로 추가적인 인프라 없이 MySQL을 사용했었다면 쉽게 구축할 수 있어서 괜찮은 방법이라는 생각이 들어 남겨본다.

RDS 데이터베이스 설정

우선 FULLTEXT INDEX를 사용하기에 앞서 AWS RDS를 사용한다면 환경변수를 편집해야 한다. AWS에 로그인하고 RDS로 들어오면 파라미터 그룹이라는 게 보인다.

내부에 들어가면 다음과 같이 파라미터 그룹이 나온다. 꼭 mysql8.0으로 들어가보자. aurora-mysql이나 mariadb의 파라미터는 다르다.

다음과 같이 파라미터 칸에 가서 ngram_token_size를 2로 변경하고, innodb_ft_min_token_size를 2로 변경하자. 또한, ft_min_word_len의 길이도 2로 변경하자.

이렇게 변경을 하고 나서 모든 DB 세션을 종료하고 RDS 서버를 재시작하여보자. 잘 본인이 사용하는 세션까지 잘 반영되어 있는지 확인하기 위해 워크벤치의 세션에서 아래와 같이 명령을 쳐보자.

show variables like '%token%';

그러면, 이전에 변경한 파라미터에 대해 값이 2로 나올 것이다. 기본 값은 2가 아니고 3이거나 4인 걸로 안다.

막힘이 없었다면 프로젝트에서 설정으로 인해 사용을 하는 데에는 아무런 이상이 없다!

로컬에서 설정

mysql에서 my.ini나 cnf파일을 찾으려면 C:ProgramData에 들어가야 한다. 이 때, 폴더에선 숨김 폴더 보기 설정을 켜줘야지 확인할 수 있다.

my.ini 파일을 MySQL, MySQL Server 8.0에서 찾았다면 메모장으로 열어서 ctrl + f로 [mysqld]라는 태그를 찾자.

ngram_token_size = 2
innodb_ft_min_token_size = 2
ft_min_word_len = 2

그 아래에 위와 같은 3개 줄을 설정해준다. 만약에 여기서 저장이 되지 않는다면 속성 칸에 들어가서 본인의 사용자에 대해서 모든 권한을 허용으로 누르자.

이제 MySQL installer를 들어가서 다음과 같은 페이지에서 reconfigure를 누르고 계속 다음으로 넘어가면 서버를 재시작할 수 있다.

잘 적용이 되었는지 확인을 위해 workbench에 들어가 다음과 같은 명령어를 치면 값이 변경된 걸 확인할 수 있다.

아래의 명령어를 직접 입력해서 이제 FULLTEXT 인덱스를 만들면 토큰 크기가 2짜리 전문 검색 인덱스를 만들 수 있다.

ALTER TABLE {테이블명} ADD FULLTEXT({컬럼명});
profile
성장하고 싶은 신입 BE개발자

0개의 댓글