FULLTEXT 검색 방식
- 자연어 검색(natural search)
검색 문자열을 단어 단위로 분리한 후, 해당 단어 중 하나라도 포함되는 행을 찾는다. - 불린 모드 검색(boolean mode search)
검색 문자열을 단어 단위로 분리한 후, 해당 단어가 포함되는 행을 찾는 규칙을 추가적으로 적용하여 해당 규칙에 매칭되는 행을 찾는다. - 쿼리 확장 검색(query extension search)
2단계에 걸쳐서 검색을 수행한다. 첫 단계에서는 자연어 검색을 수행한 후, 첫 번째 검색의 결과에 매칭된 행을 기반으로 검색 문자열을 재구성하여 두 번째 검색을 수행한다. 이는 1단계 검색에서 사용한 단어와 연관성이 있는 단어가 1단계 검색에 매칭된 결과에 나타난다는 가정을 전제로 한다.
풀 텍스트 인덱스 생성
1. CREATE FULLTEXT INDEX unique_code_idx ON lotto(unique_code);
2. alter table lotto add FULLTEXT(unique_code);
FULLTEXT 검색 엔진 설정하기
검색어가 너무 짧은 경우 아무런 검색결과도 나오지 않는다. 이때 짧다는 기준은 4글자 이하다. 만약 2글자의 검색어를 지원하려면 최소 검색어 길이 값을 2로 수정해야 한다. my.cnf 설정파일을 열어서 ft_min_word_len 변수 값을 기본값인 4에서 2로 변경한다
# my.cnf 파일
ft_min_word_len=2
적용 되었는지 확인
SHOW INDEX FROM lotto;

풀텍스트 쿼리 문
1. 자연어
자연어 검색 시 관련이 낮은 것도 같이 검색이 된다.
select * FROM lotto WHERE MATCH(unique_code) AGAINST("d4b42907b15d43cfb0b1e635aeff4a00" );
2. 불린 모드
- 검색의 정확도에 따라 결과가 정렬되지 않는다.
- 구문 검색이 가능하다
- 필수(+), 예외(-), 부분(*) 연산자를 사용할 수 있다
d4b42907b15d43cfb0이 포함된 구문만 검색 된다.
select * FROM lotto WHERE MATCH(unique_code) AGAINST("+d4b42907b15d43cfb0*" IN BOOLEAN MODE);
3.인덱스 타는 지 확인.
describe select * FROM lotto WHERE MATCH(unique_code) AGAINST("d4b42907b15d43cfb0b1e635aeff4a00" IN BOOLEAN MODE);
1 | SIMPLE | lotto | fulltext | unique_code_idx | unique_code_idx | 0 | const | 1 | 100.00 | Using where; Ft_hints: no_ranking |
'항해 99(9기) > WIL' 카테고리의 다른 글
항해 99 (9기) 12주차 WIL @Async (0) | 2022.12.13 |
---|---|
항해 99 (9기) 10주차 WIL (0) | 2022.11.27 |
항해 99 (9기) 9주차 WIL DB 실행 계획 (1) | 2022.11.21 |
항해 99 (9기) 8주차 WIL (0) | 2022.11.14 |
항해 99 (9기) 7주차 WIL (0) | 2022.11.06 |