트러블슈팅

[트러블슈팅] MySQL FULLTEXT 특정 문자 검색 안될 때

2021. 8. 6. 17:25
목차
  1. 참고

N-gram Parser를 이용해 검색 기능을 구현하던 중 특정 문자에 대해 검색이 안되는 것을 확인했다.

현재 'name'이라는 칼럼에 FULLTEXT INDEX를 걸어놓은 상태인데, 'b'라고 검색하면 정상적으로 결과가 나오지만 'a'라고 검색하면 결과가 나오지 않는 것을 확인할 수 있다.

 

쿼리문은 다음과 같다.

SELECT *
FROM products
WHERE MATCH(name) AGAINST (<검색어> IN BOOLEAN MODE);

'b'라고 검색한 경우
'a'라고 검색한 경우

이는 'a'가 구분자(Stopword)이기 때문에 발생한 문제이다. 자세한 설명은 관련 링크를 참고하면 된다.

 

MySQL innoDB에는 내부적으로 다음과 같은 stopword들이 존재한다.

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DEFAULT_STOPWORD;
+-------+
| value |
+-------+
| a     |
| about |
| an    |
| are   |
| as    |
| at    |
| be    |
| by    |
| com   |
| de    |
| en    |
| for   |
| from  |
| how   |
| i     |
| in    |
| is    |
| it    |
| la    |
| of    |
| on    |
| or    |
| that  |
| the   |
| this  |
| to    |
| was   |
| what  |
| when  |
| where |
| who   |
| will  |
| with  |
| und   |
| the   |
| www   |
+-------+

 

이처럼 기본적으로 설정된 stopword들을 무시하기 위해선 innodb_ft_enable_stopword라는 환경변수의 값을 바꿔줘야 한다.

# 일시적 처리
SET GLOBAL innodb_ft_enable_stopword = 0;

또는 /etc/my.conf에 아래 항목을 추가한다.

# 영구적 처리 (재시작 시 적용)
innodb_ft_enable_stopword = 0;

 

RDS를 사용하는 경우엔 RDS - 파라미터 그룹 - innodb_ft_enabled_stopword에서 0으로 세팅해준다.

 

 

 

정상적으로 검색이 이루어지는 것을 확인할 수 있다.

 

짜잔

 

참고

https://dev.mysql.com/doc/refman/5.7/en/fulltext-search-ngram.html

 

MySQL :: MySQL 5.7 Reference Manual :: 12.10.8 ngram Full-Text Parser

12.10.8 ngram Full-Text Parser The built-in MySQL full-text parser uses the white space between words as a delimiter to determine where words begin and end, which is a limitation when working with ideographic languages that do not use word delimiters. To

dev.mysql.com

https://dev.mysql.com/doc/refman/8.0/en/fulltext-stopwords.html

 

MySQL :: MySQL 8.0 Reference Manual :: 12.10.4 Full-Text Stopwords

12.10.4 Full-Text Stopwords The stopword list is loaded and searched for full-text queries using the server character set and collation (the values of the character_set_server and collation_server system variables). False hits or misses might occur for st

dev.mysql.com

https://m.blog.naver.com/pareko/221873782090

 

mysql fulltext ngram stopword 설정

mysql fulltext ngram stopword 설정 MySQL 5.7 부터 FULLTEXT ngram 을 이용할 수 있습니다. ...

blog.naver.com

 

저작자표시 비영리 (새창열림)

'트러블슈팅' 카테고리의 다른 글

[트러블슈팅] IntelliJ Build Error: java.lang.AbstractMethodError  (0) 2022.07.15
[트러블슈팅] 카카오맵 401 Unauthorized 에러 (kakao is not defined)  (2) 2021.10.05
[트러블슈팅] Invalid keyPath 에러  (0) 2021.05.28
[트러블슈팅] UseEffect에서 clean up이 되지 않을 때 (feat. async)  (0) 2021.05.25
[트러블슈팅] ER_CON_COUNT_ERROR: Too many connections  (1) 2021.05.06
  1. 참고
'트러블슈팅' 카테고리의 다른 글
  • [트러블슈팅] IntelliJ Build Error: java.lang.AbstractMethodError
  • [트러블슈팅] 카카오맵 401 Unauthorized 에러 (kakao is not defined)
  • [트러블슈팅] Invalid keyPath 에러
  • [트러블슈팅] UseEffect에서 clean up이 되지 않을 때 (feat. async)
코택
코택
코택
TaxFree
코택
전체
오늘
어제
  • 분류 전체보기 (369)
    • Spring (29)
      • Spring (18)
      • 스프링 핵심 원리 - 고급편 (11)
    • Spring Batch (4)
    • JPA (4)
    • CS (89)
      • 자료구조 (2)
      • 네트워크 (5)
      • 운영체제 (1)
      • 데이터베이스 (4)
      • SQL (7)
      • 알고리즘 이론 (4)
      • 알고리즘 문제 풀이 (66)
    • 웹 (28)
      • React.js (4)
      • Next.js (1)
      • Node.js (14)
      • FastAPI (4)
      • Django (5)
    • 프로그래밍 언어 (45)
      • Python (5)
      • Java + Kotlin (29)
      • JavaScript + TypeScript (11)
    • 테스트코드 (26)
      • ATDD, 클린 코드 with Spring (4)
      • 이규원의 현실 세상의 TDD: 안정감을 주는 코드.. (20)
    • 인프라 (6)
      • AWS (2)
      • Kubernetes (4)
    • 트러블슈팅 (25)
    • 책 (89)
      • Effective Java (54)
      • Effective Kotlin (14)
      • 도메인 주도 개발 시작하기: DDD 핵심 개념 정.. (11)
      • 웹 프로그래머를 위한 데이터베이스를 지탱하는 기술 (6)
      • 도메인 주도 설계 첫걸음 (4)
    • Git (10)
    • 회고 (5)
    • etc (8)

블로그 메뉴

  • 홈
  • 방명록
  • 관리
  • GitHub
  • LinkedIn

공지사항

  • 스킨 관련

인기 글

태그

  • fastapi
  • 파이썬
  • 그래프
  • atdd
  • 깊이 우선 탐색
  • Shortest Path
  • 그래프 탐색
  • 브루트포스
  • http
  • BOJ
  • dp
  • mysql
  • 장고
  • Git
  • 백준

최근 댓글

최근 글

hELLO · Designed By 정상우.
코택
[트러블슈팅] MySQL FULLTEXT 특정 문자 검색 안될 때
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.