아빠, 이거 검색이 왜 이렇게 안 돼?
상식이 독서퀴즈 AI (https://wordplay.co.kr)를 오픈한 지 어느덧 1년이 되었습니다.
그리고 오늘, 오픈 이래 최초의 공식적인 고객 불편 사항이 접수되었습니다.
사실 이 서비스는 올해 초등학교 3학년이 되는 첫째 아들을 위해 만든 서비스입니다.
책을 좋아하고 이야기 나누는 걸 좋아하는 아이와 더 깊은 대화 거리를 만들기 위해 시작한 프로젝트였죠.
아들을 위해 한 권 두 권 데이터를 쌓다 보니 어느새:
� 학습된 도서: 6,596권
❓ 생성된 문제: 135,394개
스케일이 제법 커져 버렸습니다. (TMI지만 정말 많이도 쌓였네요. �)
평화로운 저녁 식사 시간, 아들이 불만을 토로했습니다.
"설민석의 한국사 1권을 찾고 싶은데, '한국사 1'이라고 치면 이상한 게 너무 많이 나오고, 글자 하나만 틀려도 아예 안 나와!"
개발자인 아빠로서 뜨끔했습니다. 사실 검색 기능... 귀찮아서 MySQL의 %like% 쿼리로 대충 떼워 놨거든요.
정확도가 떨어짐 (너무 많이 나오거나, 아예 안 나오거나)
오타 보정 안 됨
당연히 초성 검색 불가
아들의 불편함은 곧 서비스의 위기이다...
기존 RDB의 LIKE 검색을 버리고, Meilisearch를 도입하기로 결정했습니다.
목표는 "개떡같이 말해도 찰떡같이 알아듣는 검색" 구현하기.
1. 마이그레이션 (Migration) 6,000권 분량의 도서 데이터를 Meilisearch로 옮기는 데 걸린 시간? 2초도 안 걸립니다. 역시 빠르네요.
2. 기능 구현 단순 검색뿐만 아니라 디테일을 더했습니다.
Exact Match (정확도 우선): 제목을 정확히 알고 검색할 때를 대비해 필터링 옵션 추가.
초성 검색: 'ㅎㄱㅅ'만 쳐도 '한국사'가 나오도록 설정.
유연한 검색: '한국사 1'을 입력하면, 이제 AI가 찰떡같이 알아서 관련 도서를 랭킹 순으로 정렬해 줍니다.
적용전
적용후
이제 '한국사 1'만 입력해도 설민석의 한국사 시리즈가 정확도 순으로 예쁘게 촤라락 뜹니다.
"자, 이제 검색해 봐! 엄청 잘 될 거야!"
...라고 말하려 했으나, 30분 만에 수정을 마치고 뒤돌아보니 고객님(아들)은 이미 주무시네요. �
테스트는 내일 아침 고객님 기상하시면 부탁드려야겠습니다. 아들을 위해 시작했지만, 덕분에 서비스가 한 단계 더 똑똑해졌네요.
책 좋아하는 아이를 둔 부모님들, 이제 https://wordplay.co.kr 에서 검색 스트레스 없이 아이와 독서 퀴즈를 즐겨보세요!