mysql에서 데이터를 검색해야하는 작업을 해야했다.
like같은걸 쓸 수 있지만 양심상 패스했다.
mysql full text search를 활용하여 검색을 하기로 결정했다.
후엔 시간이 나면 일라스턱 서치같은 검색엔진을 따로 적용해볼 예정이다.
ALTER TABLE 테이블명 ADD FULLTEXT INDEX 키값(적용할 컬럼1, 적용할 컬럼2) WITH PARSER NGRAM;
이렇게 Ngram을 포함해서 검색하고자 하는 컬럼에 FULLTEXT INDEX를 걸어준다.
처음에 Ngram은 자동으로 포함된다고 들어서, 안했는데 aws aurora는 그딴게 없었다.
Ngram은 단어단위로 쪼개서 인덱싱을 한다.
기본 사이즈는 ngram_token_size 2 라서 2글자를 쪼개서 저장한다.
여기서 생기는 문제가 한글자 검색이 안된다는 것..
rds 파라미터로 가서 Ngram_token_size를 1로 변경해줬다.
Rds를 재부팅 시키고 나서 적용 완료
WHERE MATCH(food_name, food_brand) AGAINST("'커피' " in boolean mode)
이런 식으로 활용하면 되겠다.
boolean mode는 포함하고 있지 않은 것들을 true false로 나눠, true값만 반환해 좀더 정확도를 올려준다.
사실 검색 로직은 더 완벽하고, 정확하게 해야겠지만
쓰는 사람은 실무자 2명이 어드민에서 특정 정보를 빠르게 확인하는 것에만 쓸거라 공수를 더 들이진 않았다.
비즈니스와 개발은 밀접하면서도 관련 없는 부분들이 많기 때문에 일을 할 때 조율할게 많다.
특히나 매일매일이 바쁜 전쟁터같은 스타트업에선 사소한 기능 하나를 완벽하게 만들겠다고, 시간을 쏟을 수가 없다
'Back > Server' 카테고리의 다른 글
[Aws RDS Aurora Serverless MySQL] 외부 접속 (0) | 2021.11.17 |
---|---|
AWS WAF Custom Rule 간단 예제 (2) | 2021.11.10 |
몽고DB 아틀라스 연결 (0) | 2021.10.09 |
AWS 로드밸런스 ACL 적용 EC2 WAF, ACL (0) | 2021.10.07 |
AWS EC2 HTTPS (0) | 2021.10.05 |