SQL - MySQL, Full Text Index

2026. 3. 31. 14:17ยท๐Ÿงฉ SQL

MySQL

 

 

โœ… 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
'๐Ÿงฉ SQL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • SQL - PostgreSQL, pgAdmin
  • SQL - PostgreSQL ์„ค์น˜(๊ณต์‹ ์‚ฌ์ดํŠธ, Homebrew)
  • SQL - MySQL, Event & Trigger
  • SQL - MySQL, UNION
j2yonghwa
j2yonghwa
Trying to be a fullstack developer ๐Ÿš€
  • j2yonghwa
    j2yonghwa
    j2yonghwa
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (156)
      • โฐ Daily WakaTime (1)
      • ๐Ÿ–๏ธ ๋…ธ๋งˆ๋“œ์ฝ”๋” (2)
      • ๐Ÿบ Dev Setup (3)
      • ๐Ÿ”ญ Tech Info (1)
      • ๐Ÿšซ Error (1)
      • ๐Ÿ“‚ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (23)
      • ♣๏ธ Next.js 14 (10)
      • ♠๏ธ Next.js 12 (20)
      • ๐Ÿ›ธ React Native (12)
      • ๐Ÿฆ‹ TypeScript (1)
      • ๐Ÿ Python (2)
      • ๐ŸŒŠ TailwindCSS (4)
      • ๐Ÿงฉ SQL (25)
      • ๐Ÿ’Ž Prisma (5)
      • ๐ŸŒฑ MongoDB (4)
      • ๐ŸŽฏ Redis (1)
      • ๐Ÿงฌ GraphQL (2)
      • ๐Ÿ”ฅ Firebase (7)
      • ๐Ÿ’ธ Third-Party Services (2)
      • ๐Ÿ•ธ๏ธ Web (1)
      • ๐Ÿ† ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (23)
      • ๐Ÿ“™ ๋ชจ๋”ฅ๋‹ค (5)
      • ๐Ÿ“— ์ฝ”ํ…Œ ํ•ฉ๊ฒฉ์ž ๋˜๊ธฐ -JS- (0)
      • ๐Ÿ“˜ ํด๋ฆฐ์ฝ”๋“œ (0)
      • ๐Ÿฏ ๊ฟ€ํŒ ๐Ÿ (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • ๊นƒํ—™
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    React Native
    Next.js
    react router
    MySQL
    dev setup
    ๋ชจ๋”ฅ๋‹ค
    SQL
    PostgreSQL
    Firebase
    next.js 14
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ž…๋ฌธ
    ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
    Python
    mongoDB
    tailwindcss
    Prisma
    next.js 12
    API
    0๋ ˆ๋ฒจ
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
j2yonghwa
SQL - MySQL, Full Text Index
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”