Elasticsearch 검색 랭킹

JunMyung Lee·2024년 5월 31일
0

Elasticsearch

목록 보기
39/41

검색 서비스를 운영하면서 검색 결과에 대한 정렬에 대해 이야기 하고자한다. 아래는 무신사의 검색정렬 방식이다.
이외에 검색서비스에 대해 추가가 되었으면 하는 방식을 작성했다.

무신사

무신사 검색 정렬

  • 상품 정보를 조합하여 상품의 인기도와 적합성을 조합

이상적인 랭킹 순위

상품 클릭 정보

상품이 클릭이 되었다면 대부분 다음과 같은 상황이다.

  • 사용자가 원하는 상품
  • 원하는 상품과 비슷한 상품
  • 원하지는 않았지만 관심이 있는 상품

클릭이 안된 상품보다 클릭이 많이 된 상품이 우선 노출이 되어야 한다

클릭된 페이지 정보

1 페이지에서 클릭이 많이된 상품은 높은 점수를 가지는 상품이지만,
2 페이지 이후에 클릭된 상품은 더욱 높은 점수를 가지는 상품이여야 한다.

사용자가 원하는 상품이 노출되지 않아 2 페이지 이후의 탐색 단계를 거쳤으므로
추후 1 페이지 상위로 노출이 되어야 한다

신규 상품에 대해서

이미 오랫동안 판매 되어온 상품을 신규 유입되는 상품이 상위 노출이 될 수 없다.
따라서 현재 날짜와 상품의 등록 시점을 기준으로 신규 등록된 상품일 수록 점수가 높은 상품이여야 한다.

신규 상품이여도 다른 점수들의 합이 높다면 당연히 기존 상품이 높아야 한다. 다만, 신규 상품의 경우
1 페이지가 아니더라도 검색결과에 노출이되는 조건이 될 수 있어야 한다


스코어 정규화

각각의 가중치를 조절하고 정규화를 각 가중치별 스케일링을 조절

Min-Max 정규화

Min-Max 정규화는 데이터의 최소값과 최대값을 사용하여 데이터를 0과 1 사이의 값으로 변환합니다. 이는 데이터의 분포를 유지하면서 스케일을 조정하는 방법입니다.

장점: 모든 데이터 포인트가 동일한 범위 내에 위치하게 되어 비교가 용이합니다.
단점: 아웃라이어(outlier)의 영향을 크게 받을 수 있습니다.

Z-score 정규화 (표준화)

Z-score 정규화는 데이터의 평균과 표준편차를 이용하여 데이터를 변환합니다. 변환된 데이터는 평균이 0이고 표준편차가 1인 정규분포를 따르게 됩니다.

장점: 데이터의 분포를 중앙에 위치시키고 표준편차를 기준으로 스케일을 조정합니다. 아웃라이어에 대한 영향을 덜 받을 수 있습니다.

단점: 데이터가 정규분포를 따르지 않는 경우, 그 효과가 제한될 수 있습니다.

단위 벡터 정규화 (벡터 정규화)

단위 벡터 정규화는 데이터 포인트를 벡터로 간주하고, 각 벡터의 길이가 1이 되도록 정규화합니다. 주로 코사인 유사도 계산에 사용됩니다.

장점: 벡터의 크기를 일정하게 맞춤으로써 방향성에 초점을 맞추어 비교할 수 있습니다.

단점: 데이터의 크기에 대한 정보가 사라집니다.

로그 정규화

로그 정규화는 데이터의 스케일을 조정하기 위해 로그 함수를 사용하는 방법입니다. 주로 데이터의 스케일 차이가 클 때 사용됩니다.

장점: 데이터의 분포를 고르게 만들어줍니다. 특히, 큰 값들이 작은 값들보다 과도하게 지배하는 것을 방지합니다.
단점: 0 이하의 값을 처리할 때 제한이 있을 수 있습니다.

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

0개의 댓글