반응형
# 문자열 포함 함수 like
- 특정 문자가 포함되어 있는 모든 글자를 검색
- 즉, 단어 사이에 있어도 찾고자 하는 문자열이 있으면 검색
- 정확도는 높지만 속도가 느림
예시) 영화 제목에서 kill이 들어간 영화 검색
- kill이 단어 사이에 있어도 검색
-- select 컬럼명 from 테이블명 where 컬럼명 like '검색어'
select title from movie where title like '%kill%';
# 문자열 컬럼 FULLTEXT 인덱싱
- 특정 문자를 한개의 블럭으로 인식(인덱싱)하여 검색
- 인덱싱 : 블럭별로 목차를 만들어서 검색
- 즉, 찾고자 하는 문자열을 단어별로 검색
- 정확도는 낮을 수 있지만 속도가 빠름
예시) 영화 제목에서 kill이 들어간 영화 검색
- kill이 단어로만 되어 있는 영화 검색
-- select 컬럼명 from 테이블명 where match(컬럼명) against('검색어')
select title from movie where match(title) against('kill');
# 컬럼을 FULLTEXT 인덱싱 하는 방법
- MySQL Workbench를 이용해서 설정하는 방법
- Table 설정에서 Indexes 탭 이동 후 설정
- SQL 쿼리문으로 설정하는 방법
- ALTER TABLE '테이블' ADD FULLTEXT INDEX '인덱스명' () VISIBLE;
- -> ALTER TABLE `movie_db`.`movie` ADD FULLTEXT INDEX `m.title` () VISIBLE;
(위의 MySQL과 같은 테이블 예시)
# FULLTEXT 인덱스를 이용해서 검색하는 방법
사용하는 방법은 검색엔진에서 사용하는 방법과 많이 비슷함
- and 검색 : 모든 검색어가 포함되는 데이터 조회
select * from 테이블명 where match(컬럼명) against('검색어1 + 검색어2' IN BOOLEAN MODE);
- or 검색 : 둘 중 하나라도 포함되는 데이터 조회
select * from 테이블명 where match(컬럼명) against('검색어1 검색어2');
- 검색어1이 포함된 데이터에서 검색어2가 들어간 것을 제외
select * from 테이블명 where match(컬럼명) against('검색어1 - 검색어2' IN BOOLEAN MODE);
- 공백이 포함된 검색어 조회
select * from 테이블명 where match(컬럼명) against('검색어 검색어');
반응형