๊ฐ์
article์ด ์๋ ํ ์ด๋ธ์์ ํน์ ner๋ฅผ ํฌํจํ ๊ธฐ์ฌ๋ค์ select ํ๋ ์ฟผ๋ฆฌ๋ฅผ ์์ฑ ์ค์ ์์๋ค.
โ ์ฌ๊ธฐ์ ๋ฌธ์ ๋ฐ์
2๊ธ์๋ ๊ฒ์์ด ์๋๊ณ , 3๊ธ์๋ถํฐ ๊ฒ์ ๊ฐ๋ฅ
1๏ธโฃ ner ํค์๋ ์ค "์ผ์ฑ"์ ํฌํจํ ๊ธฐ์ฌ๋ฅผ ๊ฐ์ง๊ณ ์ค๋ query
SELECT * FROM articles WHERE MATCH(ner_text) AGAINST('+์ผ์ฑ' IN BOOLEAN MODE);
→ ์๋ฌด๊ฒ๋ ์ถ๋ ฅ ์๋จ
2๏ธโฃ ์ผ์ฑ์ ์๋ฅผ ํฌํจํ ๊ธฐ์ฌ๋ฅผ ๊ฐ์ง๊ณ ์ค๋ query
SELECT * FROM articles WHERE MATCH(ner_text) AGAINST('+์ผ์ฑ์ ์' IN BOOLEAN MODE);
→ ์ ์์ ์ผ๋ก ์ถ๋ ฅ
ํ์ธ
MySQL FULLTEXT ์ธ๋ฑ์ค์์ 2๊ธ์ ์ด์์ด ๊ฒ์์ด ๋์ง ์๋๋ค.
SHOW VARIABLES LIKE 'innodb_ft_min_token_size';
>> 3
- 3๊ธ์ ์ด์๋ถํฐ ์ธ๋ฑ์ค ๋ฑ๋กํ๊ณ ์์๋ค.
- 2๊ธ์ ๋จ์ด๋ ์ธ๋ฑ์ค ํฌํจ X
ํด๊ฒฐ ๋ฐฉ๋ฒ 1๏ธโฃ : innodb_ft_min_token_size ๊ฐ ์กฐ์
1. MySQL ์ค์ ํ์ผ (์: my.cnf ๋๋ my.ini) ์์
[mysqld]
innodb_ft_min_token_size=2
2. MySQL ์ฌ์์
3. FULLTEXT ์ธ๋ฑ์ค ์ฌ์์ฑ
ALTER TABLE articles DROP INDEX idx_ner_text;
ALTER TABLE articles ADD FULLTEXT INDEX idx_ner_text (ner_text);
ํด๊ฒฐ ๋ฐฉ๋ฒ 2๏ธโฃ : WITH PARSER ngram (Innodb ์ ์ฉ)
ALTER TABLE articles
ADD FULLTEXT INDEX idx_ner_text_ngram (ner_text)
WITH PARSER ngram;
- ngram ํ์๋ ํ๊ธ๋ ๊ธ์ ๋จ์๋ก ์ชผ๊ฐ๊ธฐ ๋๋ฌธ์ 2๊ธ์ ๋จ์ด, ์ฌ์ง์ด 1๊ธ์ ๋จ์ด๋ ๊ฒ์ ๊ฐ๋ฅ
์งํ
mysql config๋ฅผ ์์ ํ๋ ๋ฐฉ๋ฒ๋ณด๋ค๋ ์๋ก์ด ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ ๊ฒ ๋ซ๋ค๊ณ ํ๋จํ์ฌ ๋ฐฉ๋ฒ 2๏ธโฃ๋ก ์งํ
- ์ธ๋ฑ์ค ์์ฑ
ALTER TABLE articles DROP INDEX idx_ner_text;
ALTER TABLE articles
ADD FULLTEXT INDEX idx_ner_text (ner_text)
WITH PARSER ngram;
- ์กฐํ
SELECT * FROM articles WHERE MATCH(ner_text) AGAINST('+์ผ์ฑ' IN BOOLEAN MODE);
โก๏ธ 2๊ธ์๋ ์ ์กฐํ๋๋ค!
'๐ฉ๐ปโ๐ป > database' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[MySQL] Mac์ my.cnf ํ์ผ์ด ์๋ค (mysql ๋ค์ด๋ฐ์์ ์ง์ ์ค์นํ์ ๊ฒฝ์ฐ) (0) | 2025.05.30 |
---|---|
[MySQL] ๊ฒ์ ์ฟผ๋ฆฌ ์ฑ๋ฅ ๋น๊ต (0) | 2025.05.28 |
[MySQL] localhost ๋น๋ฐ๋ฒํธ ๊น๋จน์๋ค (0) | 2025.02.14 |
ํฌ๋กค๋ง ๋ฐ์ดํฐ ์ ์ฌ SQL vs NoSQL (0) | 2025.02.06 |
[MongoDB] ๊ฐ๋จํ ๊ฐ๋ ์ ๋ฆฌ (0) | 2025.01.10 |