TIL

2021.02.13~ 16기록장

Gisungcu 2022. 2. 13. 01:15

ToDo

  • n-gram 인덱스 적용, 성능 테스트
  • 회원 탈퇴

Done

  • n-gram 인덱스 적용, 성능 테스트

Weekly goal

  • 사이드 api 개발
  • 책 읽기
  • 도커, 쿠버, 밋업 준비. 서버 터짐

n-gram

전문 검색 등을 할 때 항상 생각했던 것은 일라스틱 서치였습니다.

 

그런데 실서버를 운영하다 보니 서버의 비용을 생각할 수밖에 없었다.

 

돈은 최대한 아끼고 싶고 요구 사항은 맞춰야 하기에 또 성능까지 잡고 싶기에 더 찾아보니..

 

mysql의 n-gram을 찾게 되었다. token으로 잘라서 인덱스를 만드는 방법인데 성능도 잘 나오고 좋다.

 

인덱스의 크기가 좀 커지는 단점이 있지만.

 

또 생각해야 하는 점은 stopWord가 포함되면 검색이 안 되는 점이 있다.

 

token의 크기가 2이고 "a, b"가 content일 때 stopWord가 , 이면 "a, " "b, "는 검색이 되지 않는다.

 

stopWord가 포함되면 검색이 안된다는 말이다.

 

boolean mode와 language mode가 있는데 둘은 같지만 boolean mode는 추가 적으로 검색 시에 조건을 더 넣을 수 있다.

 

 

 

MySQL FullText Search 전문검색 기능 (2) - N-gram - MeCab (은전한닢)

 

hoing.io

 

 

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

 

[Mysql] 게시판 검색 FULLTEXT with N-GRAM 전문 검색 최적화 (#스터디)

검색 기능이야 말로 없어서는 안될 필수적인 요소이다. 구글,네이버,다음 과 같은 대규모 검색 포털사이트 ...

blog.naver.com

 

JPA Order by subquery

 

jpa에서 ordery by에 특정 칼럼의 count를 도입해야 하는 경우가 있었다.

 

간단하게 가능하다.