๊ฐ์
SELECT * FROM articles_cn WHERE MATCH(ner_text) AGAINST('็ซ' IN BOOLEAN MODE);
์ด ์ฟผ๋ฆฌ๋ก ๊ฒ์์ ํ๋, ์๋ฌด๊ฒ๋ ์ถ๋ ฅ๋ฐ์ง ๋ชปํ๋ค.
ํน์๋ ํด์ ๋ค๋ฅธ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํด ๊ฒ์ํ์ ๋
SELECT * FROM articles_cn WHERE JSON_CONTAINS(ner, '"็ซ"');
์ ๋์จ๋ค.. ๋ญ ๋๋ฌธ์ ์๋์ค๋ ๊ฑธ๊น?
ํ์ธ
CREATE TABLE `articles_cn` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`content` text NOT NULL,
`ner` json,
`ner_text` text,
PRIMARY KEY (`id`),
FULLTEXT KEY `idx_ner_text` (`ner_text`) WITH PARSER ngram
) ENGINE=InnoDB;
์ ํ ์ด๋ธ์ ์ด DDL๋ก ์์ฑ๋์๋ค.
ner_text๋ฅผ FULLTEXT KEY๋ก ๋ฑ๋กํด์ ์ฌ์ฉํ๊ณ ์๋ค.
๊ทธ๋์ ngram ์ค์ ์ ๋จผ์ ํ์ธํ๋ค.
SHOW VARIABLES LIKE 'ngram_token_size';
→ MySQL์ ngram ํ์๋ฅผ ์ฌ์ฉํ ๋ Default token size = 2๋ก ์ค์ ๋์ด์๊ธฐ๋๋ฌธ์
1๊ธ์์ง๋ฆฌ ๋จ์ด๋ ์ธ๋ฑ์ค์ ๋ฑ๋ก๋์ง ์๋๋ค.
์งํ
1. my.cnf ํ์ผ ์์ (my.cnf ๊ด๋ จํด์ ์ด์๊ฐ ์์๋ค ใ ใ -> ์ ๋ฆฌ: https://bonory.tistory.com/166)
[mysqld]
innodb_ft_min_token_size = 1
2. mysql restart
3. ngram_token_size ํ์ธ
SHOW VARIABLES LIKE 'ngram_token_size';
4. ํ ์ด๋ธ ์ญ์ ํ ์ฌ์์ฑ / index ์ญ์ ํ ์ฌ์์ฑ ํ ํ ์คํธ
SELECT * FROM articles_cn WHERE MATCH(ner_text) AGAINST('็ซ' IN BOOLEAN MODE);
์ค์ ํ๊ธ์๋ ์ ๊ฒ์๋๋ค !!!
'๐ฉ๐ปโ๐ป > database' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[MySQL] Mac์ my.cnf ํ์ผ์ด ์๋ค (mysql ๋ค์ด๋ฐ์์ ์ง์ ์ค์นํ์ ๊ฒฝ์ฐ) (0) | 2025.05.30 |
---|---|
[MySQL] ๊ฒ์ ์ฟผ๋ฆฌ ์ฑ๋ฅ ๋น๊ต (0) | 2025.05.28 |
[MySQL] FULLTEXT ์ธ๋ฑ์ค ๊ฒ์ ๊ธ์์ ์ ํ (0) | 2025.05.28 |
[MySQL] localhost ๋น๋ฐ๋ฒํธ ๊น๋จน์๋ค (0) | 2025.02.14 |
ํฌ๋กค๋ง ๋ฐ์ดํฐ ์ ์ฌ SQL vs NoSQL (1) | 2025.02.06 |