pile·
백엔드·크몽크몽·

“검색으로 연결되는 재능” — 크몽 검색은 어떻게 동작할까요?

크몽 검색 엔지니어가 사용자가 검색어를 입력한 순간부터 결과가 나오기까지 크몽 검색 시스템이 내부에서 어떻게 동작하는지 단계별로 설명한다. 700개 이상의 카테고리, 수십만 개의 서비스 중에서 사용자에게 맞는 재능을 찾아주기 위한 Elasticsearch 기반 검색 파이프라인의 구조를 다룬다.

핵심 포인트
  • 검색 파이프라인은 유효성 검증, 검색어 전처리, Elasticsearch 쿼리 실행, 스코어링 순서로 진행된다.
  • 금지어 필터링으로 부적절한 검색어를 유효성 검증 단계에서 차단한다.
  • 검색어 전처리는 노말라이징(정규화)과 토크나이징(형태소 분석)으로 구성된다.
  • 동의어 사전, 불용어 사전, 사용자 사전을 활용해 검색 정확도를 높인다.
  • Elasticsearch의 BM25 알고리즘으로 검색어와 서비스 간의 관련도를 계산해 순위를 결정한다.
상세 정리
  • 시스템 규모: 크몽은 700개가 넘는 카테고리에 수십만 개의 서비스가 등록돼 있어 정확한 검색이 핵심 과제다.
  • 1단계 — 유효성 검증: 입력된 검색어가 금지어 목록에 해당하는지 확인하고 필터링한다. 유효하지 않은 요청은 이 단계에서 반환된다.
  • 2단계 — 전처리(노말라이징): 검색어를 표준 형식으로 정규화한다. 대소문자 통일, 특수문자 처리 등이 이 단계에 해당한다.
  • 3단계 — 전처리(토크나이징): 검색어를 의미 단위 토큰으로 분리한다. 한국어 형태소 분석을 통해 어절이 아닌 형태소 단위로 검색이 가능해진다.
  • 사전 활용 — 동의어 사전: '노트북'으로 검색해도 '노트북 컴퓨터', '랩탑' 관련 서비스를 함께 찾을 수 있게 한다.
  • 사전 활용 — 불용어 사전: '와', '을', '의' 같은 조사·접속사를 제거해 핵심 키워드만 남긴다.
  • 사전 활용 — 사용자 사전: 크몽 도메인에 특화된 용어(특정 서비스명, 카테고리 표현)를 등록해 검색 정확도를 높인다.
  • Elasticsearch 쿼리 생성: 전처리된 토큰과 사전 처리 결과를 바탕으로 Elasticsearch에 전달할 쿼리를 생성한다.
  • 스코어링 — BM25: Elasticsearch의 기본 스코어링 알고리즘인 BM25로 검색어와 각 서비스 간 관련도 점수를 계산하고 순위를 매긴다.
  • 이 글은 하이브리드 검색(BM25 + 벡터 검색) 도입기의 시리즈 전편으로, 키워드 검색의 기반 구조를 설명한다.
왜 읽나검색 시스템의 내부 파이프라인을 처음 이해하려는 엔지니어나, Elasticsearch 기반 검색 구현에서 전처리와 사전 활용 방식을 참고하고 싶은 개발자에게 유용하다.
크몽
크몽 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 백엔드·twilio-engTwilio Engineering·

    Programmable Messaging에서 Verify API로 마이그레이션하기

    Twilio의 Programmable Messaging API로 자체 OTP 솔루션을 운영하던 서비스가 Verify API로 전환하는 방법을 코드 예시와 함께 설명한다. Verify는 OTP 전송·검증을 위한 전용 API로, 전화번호 구매, 토큰 생성, DB 저장·만료 관리를 내부에서 처리해 개발자가 직접 구현할 코드를 크게 줄인다.

    요약 이어보기
    #authentication#twilio#sms+2
  2. 백엔드·포스타입포스타입·

    포스타입이 개인화 추천을 하는 방법 2부

    포스타입 백엔드 엔지니어가 벡터 기반 개인화 추천 시스템을 실제 운영하며 맞닥뜨린 성능 장애와 용량 문제를 해결한 과정을 담은 2부다. 수백만 개의 벡터 KNN 검색이 피크 시간대에 전체 Elasticsearch 검색 성능을 흔드는 문제부터 클러스터 OOM 사태까지, 쿼리 최적화와 인프라 분리 두 가지 경로로 근본 해결에 이른다.

    요약 이어보기
    #elasticsearch#vector-search#recommendation-system+2
  3. 백엔드·포스타입포스타입·

    포스타입이 개인화 추천을 하는 방법 1부

    포스타입이 태그 기반 추천의 한계를 극복하고 벡터 임베딩 기반 개인화 추천 시스템을 구축한 과정을 담은 1부다. 유사한 콘텐츠가 다른 용어를 쓰거나 동일한 태그가 전혀 다른 톤의 콘텐츠를 가리키는 문제를 임베딩 벡터로 해결하고, OpenSearch의 HNSW ANN 검색으로 수백만 벡터를 실시간 검색하는 시스템을 구축해 구매율 15% 향상을 달성했다.

    요약 이어보기
    #opensearch#vector-search#recommendation-system+2