[SQL] Boolean Full-Text Searches

C__W.A·2025년 1월 9일

SQL

목록 보기
1/5
post-thumbnail

Boolean Full-Text Searches는 MySQL에서 제공하는 강력한 검색 기능으로, 복잡한 검색 조건을 지정할 수 있습니다. 이 검색 모드는 'IN BOOLEAN MODE' 수정자를 사용하여 활성화됩니다.

🧑‍💻 사용법

SELECT * FROM table_name
WHERE MATCH(column1, column2) AGAINST('search_string' IN BOOLEAN MODE);

📌 주요 연산자와 기능

🟢 '+' 연산자: 단어가 반드시 포함되어야 함

select * 
from table_name
where match(column1) AGAINST('+MySQL +database' IN BOOLEAN MODE)

'-' 연산자: 단어가 포함되지 않아야 함

AGAINST('+MySQL -MariaDB' IN BOOLEAN MODE)

🟢 '*' 와일드카드: 단어의 시작 부분 일치

이 쿼리는 'MySQL'은 포함하지만 'MariaDB'는 포함하지 않는 결과를 반환합니다.

AGAINST('데이터*' IN BOOLEAN MODE)

'데이터베이스', '데이터분석' 등 '데이터'로 시작하는 모든 단어를 검색합니다.
큰따옴표 "": 정확한 구문 검색

AGAINST('"MySQL database"' IN BOOLEAN MODE)

정확히 'MySQL database' 구문이 포함된 결과만 반환합니다.

🟢 '>' 및 '<' 연산자: 상대적 중요도 지정

AGAINST('>MySQL <database' IN BOOLEAN MODE)

'MySQL'의 중요도를 높이고 'database'의 중요도를 낮춥니다.

고급 사용 예시

복합 검색

SELECT * FROM articles
WHERE MATCH(title, content) AGAINST('+MySQL +(>performance <optimization)' IN BOOLEAN MODE);

이 쿼리는 'MySQL'을 포함하고, 'performance'나 'optimization' 중 하나 이상을 포함하는 결과를 찾되, 'performance'에 더 높은 가중치를 줍니다.

특정 단어 제외

SELECT * FROM newspaper
WHERE MATCH(article) AGAINST('영화 배우 -남자' IN BOOLEAN MODE);

'영화'와 '배우'는 포함하지만 '남자'는 제외하는 기사를 검색합니다.

와일드카드 사용

SELECT * FROM products
WHERE MATCH(description) AGAINST('컴퓨* +("그래픽 카드" | CPU)' IN BOOLEAN MODE);

'컴퓨'로 시작하는 단어를 포함하고, '그래픽 카드' 또는 'CPU' 중 하나를 반드시 포함하는 제품을 검색합니다.
Boolean Full-Text Searches는 이러한 다양한 연산자와 기능을 조합하여 매우 정교한 검색 쿼리를 구성할 수 있습니다. 이를 통해 사용자의 복잡한 검색 요구사항을 효과적으로 처리할 수 있습니다

profile
기술은 문제를 해결하기 위해 존재한다

0개의 댓글