Elasticsearch 무신사 검색 정렬

JunMyung Lee·2024년 5월 31일
0

Elasticsearch

목록 보기
38/41

무신사에서 상품 검색 모델의 품질 개선에 대해서 작성한 문서를 읽은 내용을 작성하고자 한다

무신사 테크 URL

개선 필요성

사용자가 검색한 카테고리가 아닌 다른 상품들이 SRP(Search Results Page, 검색결과페이지) 상위에서 노출이 되고 있는 상황 발생

  • 레이스 양말 검색시도
  • 양말의 동의어인 삭스도 검색어로 추가되면서 삭스부츠상품의 상품정보에 검색이 되는 현상
  • 삭스부츠 상품의 인기도가 매우 높아 SRP 상위에 노출되는 현상 발생

개선 방향

특정 브랜드를 찾는다면 브랜드 상품을, 카테고리 상품을 찾는다면 카테고리 상품을 SRP 상위에 노출해야 한다.

그 방법은 적합도(Relevance)[^1]개념을 도입한다고 한다.

  • 브랜드 적합도가 가장 높은 상품 그룹이 그 이외의 상품 그룹보다 상위에 노출되어야 한다.
    * 무신사 스탠다드 검색 시, 무신사 스탠다드 브랜드 상품이 타 브랜드 상품보다 상위에 노출
  • 브랜드가 동일한 상품의 경우, 카테고리 적합도가 높은 순으로 노출되어야 한다.
    * 무신사 스탠다드 원피스 검색 시, 무신사 스탠다드 상품 중에서 원피스 상품이 티셔츠 상품보다 상위에 노출

  • 필드별 중요도: 특정 색인 필드를 얼마나 중시하는가에 대한 개념
  • 필드별 유사도: 검색어와 특정 색인 필드 간 벡터 유사도

AS-IS - Popularity

상품의 구매, 후기, 클레임 등으로 판단한 점수

Score(Qry,Doc)=Popularity(Qry,Doc)Score(Qry, Doc) = Popularity(Qry, Doc)

TO-BE - Popularity + Relevance

기존 인기도에 검색어 분석을 통한 적합도 점수를 더한 값

Score(Qry,Doc)=Popularity(Qry,Doc)+(aRelevance(Qry,Doc))Score(Qry, Doc) = Popularity(Qry, Doc) + ( a * Relevance(Qry, Doc) )

프로세스

개선 이전 시스템 아키텍처

  • 하루 전날 기준의 상품 데이터를 기준으로 인기도 랭킹 점수를 생성하여 배치에서 색인시 ES에 저장
  • 랭킹 점수 필드를 가지고 정렬 노출

하루 1회의 정적 색인이 이루어 지는 듯 하다

개선 이후 시스템 아키텍처

  • 기존 인기도 랭킹 필드 생성 로직 유지
  • 상품 인덱스에 브랜드 및 카테고리 정보 추가
  • 랭킹 점수와 적합도 점수의 스케일 조정을 위한 정규화[^2] 처리

[^1]: 적합도 : 검색어와 상품 색인 필드의 단어 간 확률적 연관 관계, 필드별 중요도 * 필드별 유사도
[^2]: 정규화(Normalization) : 데이터 포인트들을 일정한 스케일로 변환하는 과정, 이는 데이터의 비교와 분석을 더 정확하고 계산의 효율성을 높이기 위해 수행

profile
11년차 검색개발자 입니다. 여러 지식과 함께 실제 서비스를 운영 하면서 발생한 이슈에 대해서 정리하고 공유하고자 합니다.

0개의 댓글