
โ Full Text Index๋?
๋ฌธ์ฅ(ํ ์คํธ) ์์์ ๋จ์ด๋ฅผ ๊ฒ์ํ๊ธฐ ์ํ ์ธ๋ฑ์ค
LIKE๋ ๋ฌธ์์ด ๋น๊ต
FULLTEXT๋ “๊ฒ์ ์์ง ๋ฐฉ์”





โ Usage
Natural Language Mode
์ฃผ์ด์ง text์ ์ฐ๊ด์ฑ์ด ๋์ ๊ฒฐ๊ณผ๋ฅผ ์ฐพ๋ ๋ฐฉ์
์๋ฏธ์๋ ๊ฒฐ๊ณผ๋ฅผ ์ฐพ๊ธฐ ์ํด the, a ๊ฐ์ ๋ถ์ฉ์ด๋ ๊ฒ์์์ ์ ์ธ๋จ
CREATE FULLTEXT INDEX idx_overview ON movies (overview);
SELECT
title,
overview
FROM
movies
WHERE
MATCH(overview) AGAINST ('the food');
Boolean Mode
• ํน์ ๋ฌธ์(Operator):
โซ `+` : ํด๋น ๋จ์ด๊ฐ ๋ฐ๋์ ํฌํจ๋์ด์ผ ํจ (AND)
โซ `-` : ํด๋น ๋จ์ด๊ฐ ๋ฐ๋์ ํฌํจ๋๋ฉด ์ ๋จ (NOT)
โซ ์๋ฌด ๋จ์ด : ํด๋น ๋จ์ด๊ฐ ์์ผ๋ฉด ์ ์(์์)๊ฐ ์ฌ๋ผ๊ฐ (OR)
โซ `*` : ์์ผ๋์นด๋(์ ๋์ด ๊ฒ์, ์: apple* → apples, applesauce ๋ฑ)
โซ `"` : ์ ํํ ๊ตฌ๋ฌธ(phrase) ๊ฒ์
โซ `~` : ํด๋น ๋จ์ด๊ฐ ์์ผ๋ฉด ์ ์๊ฐ ๋ฎ์์ง(soft NOT)
โซ `>` / ` โซ `()` : ๊ทธ๋ฃนํ(์๋ธ์ฟผ๋ฆฌ)
CREATE FULLTEXT INDEX idx_overview ON movies (overview);
SELECT
title,
overview,
MATCH(overview) AGAINST ('+revenge -violence' IN BOOLEAN MODE) AS score
FROM
movies
WHERE
MATCH(overview) AGAINST ('+revenge -violence' IN BOOLEAN MODE);
CREATE FULLTEXT INDEX idx_overview ON movies (overview);
SELECT
title,
overview,
MATCH(overview) AGAINST ('+travel >asia <europe' IN BOOLEAN MODE) AS score
FROM
movies
WHERE
MATCH(overview) AGAINST ('+travel >asia <europe' IN BOOLEAN MODE);
travel์ ํ์ ํค์๋, asia ํฌํจ๋๋ฉด ๊ฐ์ , europe ํฌํจ๋๋ฉด ๊ฐ์
CREATE FULLTEXT INDEX idx_overview ON movies (overview);
SELECT
title,
overview,
MATCH(overview) AGAINST ('+(action, thriller) -horror +love' IN BOOLEAN MODE) AS score
FROM
movies
WHERE
MATCH(overview) AGAINST ('+(action, thriller) -horror +love' IN BOOLEAN MODE);
action๊ณผ thriller ๋ ์ค ํ๋๋ ๋ฌด์กฐ๊ฑด ํฌํจ
CREATE FULLTEXT INDEX idx_overview ON movies (overview);
SELECT
title,
overview,
MATCH(overview) AGAINST ('psycho*' IN BOOLEAN MODE) AS score
FROM
movies
WHERE
MATCH(overview) AGAINST ('psycho*' IN BOOLEAN MODE);
psycho ๋ค์ ์๋ฌด ๊ธ์๋ ์๋ ๋๋ ๋จ์ด๊ฐ ํฌํจ
Query Expansion Search
ํด๋น ์ฟผ๋ฆฌ๋ก ๊ฒ์๋ ๊ฒฐ๊ณผ์์ ์ฐ๊ด์ฑ์ ์ฐพ๊ณ ํด๋น ์ฐ๊ด์ฑ์ผ๋ก ๋ค์ ์ฟผ๋ฆฌ ๊ฒ์์ ํ๋ค.
๊ฒ์์ 2๋ฒํ๊ธฐ ๋๋ฌธ์ ๋ฆฌ์์ค๊ฐ ๋ง์ด ๋ ๋ค.(๊ทธ๋ฆฌ๊ณ ๊ฒ์ํ๋ ๋ฒ์๊ฐ ๋์ด์ ธ์ ๊ฒฐ๊ณผ๋ ๋ง์ด ๋์ค๊ฒ ๋จ)
CREATE FULLTEXT INDEX idx_overview ON movies (overview);
SELECT
title,
overview,
MATCH(overview) AGAINST (
'kimchi'
WITH
QUERY EXPANSION
) AS score
FROM
movies
WHERE
MATCH(overview) AGAINST (
'kimchi'
WITH
QUERY EXPANSION
);
https://dev.mysql.com/doc/refman/8.4/en/fulltext-boolean.html
MySQL :: MySQL 8.4 Reference Manual :: 14.9.2 Boolean Full-Text Searches
14.9.2 Boolean Full-Text Searches MySQL can perform boolean full-text searches using the IN BOOLEAN MODE modifier. With this modifier, certain characters have special meaning at the beginning or end of words in the search string. In the following query, t
dev.mysql.com
'๐งฉ SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| SQL - PostgreSQL, pgAdmin (0) | 2026.04.01 |
|---|---|
| SQL - PostgreSQL ์ค์น(๊ณต์ ์ฌ์ดํธ, Homebrew) (0) | 2026.04.01 |
| SQL - MySQL, Event & Trigger (0) | 2026.03.31 |
| SQL - MySQL, UNION (0) | 2026.03.27 |
| SQL - MySQL, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทํ, Foreign Key, JOIN (0) | 2026.03.25 |