본문 바로가기
[기획자 시선]

Day2. 29CM에서 검색원리, 검색 문제 대응하기

by 수제팥앙금 2024. 5. 10.

안녕하세요? 🥮기획자 팥씨입니다.

오늘은 29cm에서 사용자의 검색 행위를 어떻게 분기하여 처리하고,

문제가 생길 시 어떻게 대응하는지 알아보도록 하겠습니다.

 

 

 

검색 원리의 이해와 검색 문제 대응하기

안녕하세요 저는 29CM 검색팀의 검색 운영담당자(PM) 원효석입니다. 저의 첫 포스팅은 우리 29CM에서는 어떤방식으로 검색이 처리가 되며 검색결과 문제에 대해서는 어떻게 대응하는지에 대한 소

medium.com

좋은 글 써주신 29CM 검색 PM 님 감사합니다. 🙇🏻‍♂️

 

 

29CM의 검색과정

 

[배경]

  • 특정 검색어를 사용하여 상품을 찾아내지 못하는 경우가 있다.
  • 원하는 상품을 정해두고 검색을 했는데,
    원하는 것과 전혀 다른 상품들이 보여져서 쇼핑을 포기하게 되는 경우가 발생한다.

 

  • -> 이 경우, 원하는 상품을 찾지 못하고 고객이 이탈을 하거나
    상품을 찾기 위해 많은 시간을 소요해 쇼핑에 피로감을 줄 수 있다.
    • 금일 읽은 기사에서 표현을 빌려오자면.. 
    • 1) 탐색비용 증가
    • 2) 인지적 종결 욕구 높은 사람에게 피로감 부여
인지적 종결욕구란?

경제적 의사결정 : 정보를 처리하는 데 드는 시간과 노력을 최소화하려는 선택
이 욕구가 높을수록 신속한 의사결정을 중시하고, 기존 대안을 반복 선택하는 경향을 보임

 

[현재의 29CM 검색 프로세스]

 

- Elastic Search 엔진과 Nori 형태소 분석기를 사용하여 검색 서비스를 제공하고 있음.

(기술에 대한 설명은 아래에 추가했습니다.)

 

더보기

Elastic Search 엔진

 

개요:

  • 오픈 소스 분산 검색 및 분석 엔진.
  • 대량의 데이터를 실시간으로 검색하고 분석하는 데 사용됨.

특징:

  • 분산 아키텍처: 데이터를 여러 노드에 분산하여 저장하고, 검색 및 분석 작업을 병렬로 수행.
  • 강력한 검색 기능: 다양한 쿼리 언어와 필터를 사용하여 복잡한 검색 조건을 처리.
  • 실시간 검색: 데이터가 인덱싱되는 즉시 검색 가능.
  • 확장성: 수평적으로 확장 가능, 즉 노드를 추가하여 처리 능력을 쉽게 증가시킬 수 있음.
  • RESTful API: RESTful 웹 서비스를 통해 쉽게 접근 및 관리 가능.
  • 다양한 데이터 타입 지원: 텍스트, 숫자, 날짜 등 다양한 데이터 타입을 인덱싱 및 검색 가능.

Nori 형태소 분석기

개요:

  • Elastic Search에서 한글 텍스트를 분석하기 위해 사용하는 형태소 분석기.
  • 일본어 형태소 분석기인 Kuromoji를 기반으로 한 한글 분석기.

특징:

  • 한글 텍스트 분석: 한글 문장을 형태소 단위로 분해하여 의미를 분석.
  • 토큰화: 문장을 의미 있는 단어(토큰)로 나눔.
  • 맞춤법 교정 및 정규화: 한글의 다양한 변형을 정규화하여 일관된 검색 결과 제공.
  • 사용자 사전: 특정 도메인이나 애플리케이션에 맞게 사용자 정의 사전을 추가하여 분석 품질 향상.
  • 다양한 형태소 태그: 명사, 동사, 형용사 등 다양한 품사 태그를 지원하여 세부적인 텍스트 분석 가능.

결합 사용

텍스트 인덱싱:

  • 한글 문서를 Elastic Search에 인덱싱할 때, Nori 형태소 분석기를 사용하여 텍스트를 형태소 단위로 분해하여 인덱싱.

검색 쿼리 처리:

  • 사용자가 검색어를 입력하면, Nori 형태소 분석기를 통해 검색어를 분석하고, Elastic Search가 분석된 검색어를 바탕으로 적절한 결과를 반환.

정확한 검색 결과 제공:

  • 한글 특유의 언어적 특성을 고려한 형태소 분석을 통해 보다 정확하고 의미 있는 검색 결과를 제공.

 

현재의 FlowChart에 따르면, 아래와 같은 검색 Flow를 제공하고 있습니다.

 

검색어 -> 형태소 분석 -> 유사어 확장 -> 상품정보 색인 -> 랭킹정렬 -> 검색결과 페이지

 

  1. 검색어
    • 고객이 원하는 상품을 찾기 위해 키워드를 검색하는 과정
    • 검색어의 70% : 브랜드명, 상품명
    • 키워드 입력 후 엔터를 치는 순간부터, 검색결과 페이지 노출까지의 여정
  2. 형태소 분석
    • Nori 형태소 분석기 사용, 고객의 검색어 분석
    • 기능 (1) : 키워드를 명사별로 분절하여 검색소스로 활용
    • 기능 (2) : 자동 오탈자 교정 기능을 통해 키워드 수정
    • 예시 : 드링크탱크 -> 드&링&탱크 // 셀레뷰 -> 세&레뷰 
      • 명사키워드 데이터(드링크탱크, 셀레뷰 등) 를 넣어서 학습시켜줘야 함.
        그렇지 않다면 잘못된 명사분적 및 오탈자교정이 발생하여 잘못된 검색결과를 보여주게 됨.
      • 29CM에 입점한 전체브랜드 / 브랜드 유사어 / 카테고리 / 카테고리 유사어 / 일반키워드 등 지속적으로 사전에 등록 중
  3. 유사어 확장
    • 브랜드/카테고리/일반키워드 3종류의 유사 검색어들을 모아 놓은 데이터 사전 활용
    • 고객들이 특정 대표 키워드를 두고 검색을 할 수 있는 키워드들 확장 -> 상품 노출
    • 예시 : 가디건 = 가디간, 카디건, Cardigan // 마르디 메크르디 = 마르디, 메크르디, 마르디메크리디
      • 유사어 사전에 공식명칭 대표 키워드를 설정하고, 그에 맞는 유사 키워드를 등록. (브랜드, 카테고리, 일반 키워드)
  4. 상품정보 색인
    • 형태소 -> 유사어 확장되면, 해당 키워드를 통해 상품 정보들과 매칭되고 결과 불러옴.
    • 매칭되는 상품정보 필드는
      • 브랜드필드 : 해당 브랜드 대표명과 그에 등록된 브랜드 유사어 키워드들이 검색어와 매칭
      • 카테고리 : 대>중>소 3단계의 구조로 설정, '소' 카테고리 기준으로 유사어 사전에 등록된 키워드들도 검색어와 매칭
      • 검색어 : MD 또는 파트너 측에서 입력, 검색어와 매칭되는 데 사용
      • 상품 기본정보 : 상품명, 옵션값, 검색필터 등. "일반키워드" 분류값으로 등록된 유사어들이 검색어와 매칭
  5. 랭킹정렬 & 6. 검색결과 페이지
    • 2~4의 과정을 통해 결과에 노출된 준비가 된 상품들의 순서 정렬
      • 랭킹정렬 : 고객의 주문수 / 클릭 수 / 좋아요 / 장바구니 담기 / 정확한 키워드 매칭 등의 조건에 따라
        스코어가 부여되고, 스코어 높을 수록 검색결과 페이지의 상단에 상품 노출

 

[올바른 검색이 되려면]

  1. 형태소 사전에 올바른 키워드들을 등록 -> 검색어 분석이 정확히 이루어지도록 해야 한다.
  2. 유사어 사전에 고객이 검색할 수 있는 다양한 키워드들을 등록하여 검색 확률을 높여줘야 한다.
  3. 브랜드, 카테고리, 상품 기본정보 등을 정확하게 등록하여 검색어와 올바르게 매칭에 되어 상품이 노출되도록 해야 한다.

 

[검색문제 발생 시 대응 프로세스 : 검색문제 유형을 3가지로 분류 후 상세 구분 9가지로 분류]

경우의 수를 나눠본다.

  • 노출이 안되거나
  • 노출이 '잘못' 되거나
  • 랭킹이 잘못되거나

 

위의 검색 프로세스에 대한 이해를 바탕으로,

위의 3가지 경우에 따라 원인을 파악하고 대응하는 방법은 아래와 같다.

 

  1. 상품 노출이 안됨
    • 검색어 오분석 : 형태소 사전에 올바른 명사 키워드를 등록하여 해결
    • 유사어 미등록 : 공식명칭을 대표 키워드로 설정 후 유사어 사전에 등록하여 해결
  2. 상품 노출이 잘못됨
    • 검색어 오분석 : 형태소 사전에 올바른 명사 키워드를 등록하여 해결
    • 유사어 오등록 : 유사어 사전에서 해당 키워드를 삭제하여 해결
    • 카테고리 오맵핑 : 올바른 카테고리를 재지정해주어 해결
    • 카테고리 구조문제 : 카테고리 구조를 개편하여 해결
    • 검색어 오등록 : 검색어란에서 올바르지 않은 값을 삭제하여 해결
    • 필터값 오등록 : 필터값을 올바르게 수정해주어 해결
    • 상품 기본정보 오등록 : 해당 정보들을 올바르게 수정해주어 해결
  3. 랭킹 로직이 잘못됨
    • 검색어와 맞는 상품이 노출은 되었으나 연관성이 부족한 상품들이 상위에 노출되는 경우.
      • 고객들의 쇼핑 행동이 반영된 값들을 중심으로 랭킹 올려주는 점수 부여
      • 키워드들이 가지는 중의적인 값들 중 우선순위 규칙을 정하여 높은 우선순위를 가지게 되는
        상품들에게 랭킹을 올려주는 점수 부여해 해결
      • 예시) 검색결과 상품 중 고객이 많이 구매한 상품들의 랭킹을 올려준다
        -> '달력' 검색 시 '달력 카테고리'를 가진 상품의 랭킹을 올려주고 '증정' 상품들의 랭킹을 뒤로 미룸.

 

검색은 키워드 데이터와 상품 정보들의 정확성에 대한 싸움.
문제 파악 및 대응 프로세스를 명확하게 갖춰 놓는다면 빠르게 대응하여 문제 해결이 가능하다!

 

 

 

🥮 29CM의 블로그를 읽고

 

과거 마케팅 인턴 시 고객사의 상품이 구글 검색에 정확히 노출되게 하기 위해 확장검색 키워드를 관리한 경험이 떠올랐습니다.


기획자에게는 역시 논리적 사고력이 중요함을 알게되었던 글이었습니다.
사용자의 검색 의도를 캐치하고, 그에 따라 검색 시 불러와야 할 대상을 정합니다.
검색을 할 때 어떤 데이터를 어떤 순서로, 어떤 곳에 우선순위를 두고 정렬할지 결정합니다.
검색 Flow에 대한 기술적/논리적 이해를 바탕으로 문제 해결방법을 3가지 -> 9가지로 나누어 대응하는 법을 익힐 수 있었습니다.

🥮 검색 문제해결 Flow

  • 현재의 검색 Flow에 대한 논리적 이해
    • FlowChart 작성
  • 검색 문제로 인입되는 내용에 대한 검색 문제 3가지로 분류
  • 이에 따라 이슈 유형을 9가지로 분류하여 해결

🥮 기획자의 언어

  • 검색 시 탐색비용 증가
  • Elastic Search 엔진과 Nori 형태소 분석
  • 유사어 확장
  • 상품정보 색인
  • 검색어 / 유사어 - 오등록 / 미등록
  • 우선순위 결정 및 스코어 부여