#12 Full-Text Indexes

CREATE fulltext INDEX idx_overview ON movies (overview);


-- Natural Language Full-Text Search 
SELECT title, overview
FROM movies
WHERE MATCH(overview) AGAINST ('the food');

SELECT title, overview, MATCH(overview) AGAINST ('the food and the drinks') as score
FROM movies
WHERE MATCH(overview) AGAINST ('the food and the drinks');

-- Boolean Mode Search +aaa bbb -ccc +ํ•„์ˆ˜ ์žˆ์œผ๋ฉด์ข‹๊ณ  -์ œ์™ธ
SELECT title, overview, MATCH(overview) AGAINST ('+revenge food -violence' IN BOOLEAN MODE) as score
FROM movies
WHERE MATCH(overview) AGAINST ('+revenge food -vilence' IN BOOLEAN MODE);

-- >๊ฐ€์ค‘์น˜ ๋†’ <๊ฐ€์ค‘์น˜ ๋‚ฎ & "๋„์–ด์“ฐ๊ธฐ ์žˆ์œผ๋ฉด"
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);

-- ()
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);

-- *
SELECT title, overview, MATCH(overview) AGAINST ('psycho*' IN BOOLEAN MODE) as score
FROM movies
WHERE MATCH(overview) AGAINST ('psycho*' IN BOOLEAN MODE);

https://dev.mysql.com/doc/refman/8.4/en/fulltext-boolean.html

#12.3 Query Expansion

-- Query Expansion Search
-- 2๋ฒˆ ๊ฒ€์ƒ‰_ ํ‚ค์›Œ๋“œ ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ > ๊ด€๋ จ์„ฑ ๋†’์€ ๋ฐ์ดํ„ฐ ์ถ”์ถœ
-- ๊ฒ€์ƒ‰์–ด๊ฐ€ ์งง์„ ๋•Œ ์œ ์šฉ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์•”์‹œ์ ์ธ ์ง€์‹ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Œ
SELECT
  title,
  overview,
  MATCH(overview) AGAINST ('KIMCHI' WITH QUERY EXPANSION) as score
FROM movies
WHERE MATCH(overview) AGAINST ('KIMCHI' WITH QUERY EXPANSION);

Last updated

Was this helpful?