검색 도메인은
어디서부터 어떻게 건드려야 할까
커머스 업계에 있을 때 주니어 PO로서 꽤 큰 프로덕트들을 담당했었는데, 그중 하나가 검색 도메인이었다.
결제를 일으키는 사용자들의 진입 flow를 정리하다 특이한 지표를 발견했는데, 검색에서 상세로 전환되고 있는 전환율이 지속적으로 하락하고 있는 것이다. 뭔가 뚜렷하게 개편된 서비스가 없지만, 클릭률이 떨어지고 있다는 건 검색 결과 정렬 로직이나, 사용자들이 원하는 결과를 제대로 노출시키고 있지 않다는 확률이 높을 것이라고 생각했다.
히스토리를 파악해 보니, 검색 도메인이 꽤 깊은 레거시(legacy)에 파묻혀있던 것이다. 서비스는 지속적으로 확장되고 있지만, 검색은 함께 개선이 되지 않다 보니 당연히 점점 사용자들이 원하는 검색 결과와 멀어지고 있던 것이다. 결국 매출의 7-80%의 사용자는 검색을 통해 전환되기에, 매출 증대를 위해서는 검색 결과 로직을 수정하고, 고도화하는 개선이 필요하다고 생각했다.
검색 결과를 개선하고 싶은데, 검색도 전문 영역이다 보니 쉽게 건드리기가 어렵다. 약 한 달 동안 백엔드 개발자를 들들 볶으면서 개선한 기획과, 이것저것 공부를 하면서 익혔던 정보를 함께 공유하고자 작성해 본다.
우선, 검색을 하면
어떤 일이 벌어지는지부터 살펴보자.
1. 사용자는 검색어를 입력한다 = 쿼리를 날린다.
쿼리는 개발자들만 날리는 게 아니다. 우리가 흔히 구글이나, 네이버 또는 옷을 살 때 검색을 하는 행위가 바로 ‘Query’를 생성하는 것이다.
지금 구글 검색에 ‘가방’이라고 쳐보니 https://www.google.com/search?q 이러한 URL 주소가 생성된다.
여기서 ‘search?q=가방’이 바로 쿼리(q)이다. 우리는 검색엔진에 ‘가방’이라는 쿼리를 날린 것이다.
2. 검색어를 입력하면 검색 엔진을 찌르게 된다.
정확하게 말하자면 검색 쿼리인데, 우리가 이 검색어를 입력하면 > 검색엔진을 찌른다. 이때 검색 엔진은 사용자가 입력한 키워드와 검색엔진에서 갖고 있는 데이터가 얼마나 일치하는지 점수를 매기게 된다. (이 점수는 소수점 0.00000의 자리를 넘어서까지 치밀하게 계산된다)
우리는 보통 ‘얼마나 일치하는가’에 따른 정렬 로직을 받아보게 된다. 즉, 높은 점수를 받은 순서대로 노출되는 것이다.
여기서 의문점이 있을 수 있다. 당연히 ‘가방’을 검색했을 때, 키워드 점수가 높은 것부터 노출되면 정확히 잘 노출되고 있는 거 아닌가요? 전환율이 왜 떨어져요?라는 질문일 수 있겠다.
이제부터 검색 기획자가
왜 전문성을 갖고 있어야 하며,
왜 검색에 기획이 필요한지 나타나게 된다.
3. 색인(index)라는 과정이 있기 때문이다.
색인은 어떤 꾸러미에 들어있는 내용(Database)에 대한 지름길 정보를 가진 일종의 표이다. 범용적으로 ‘색인’이라는 단어를 사용하지만, 어떤 내용에 대해 빨리 찾아보기 위해 먼저 보는 것이라는 의미를 가지고 있다.
A라는 상품에 대한 Database가 있는데, 이 데이터에서 얼마만큼이 색인(인덱싱)되어 있는지 파악 해야 한다. 예를 들어 상품 하나에 대한 색인 데이터는 아래와 같을 수 있다.
- 상품코드 (AB4534)
- 상품명 (가방)
- 모델명 (라이트 백팩 화이트)
- 판매가 (58,000원)
- 할인율 (12% 할인)
- 리뷰 수 (999+개)
- 별점 (4.8점)
- 배송 타입 (빠른 배송)
- 해시태그 (#블랙프라이데이 #기획전)
위 데이터는 상품의 극히 일부 데이터인데, 여기서 더 일부만 색인되어있을 수 있다. 여기서 기획자는 어떠한 범위까지 색인을 할지 범위를 산정해야 한다. 예를 들어 사용자들에게 더 믿을만한 제품이라는 것을 보여주기 위해 “만족도 점수”나 “브랜드명”을 추가적으로 색인에 포함시킬 수 있는 것이다.
그렇다면 어떠한 결과가 나타날까?
- 내가 ‘쿠션’이라는 쿼리를 날렸을 때 (=검색어를 입력했을 때)
- 이전에는 쿠션 상품만 색인해왔다면 (=쿠션이라고 적힌 상품명으로만 상품을 노출시켰다면)
- ‘쿠션’이라는 단어를 포함하고 있는 브랜드명까지 노출시켜주고 (= 브랜드명까지 검색을 확장시켜주고)
- 만족도 점수가 더 높은 브랜드를 상위 노출시켜주는 것이다 (*이는 스코어링 점수인데, 하단에서 이어 설명하겠다.)
그리고 이런 색인 데이터는 최신성을 유지시켜주어야 하기 때문에 (최신성이지, 실시간성은 아니다) 잦은 주기로 데이터를 한 번 엎어쳐준다(?).
(참고)
색인을 짧은 시간에 여러 번 해야 하는 이유는 사용자들에게 정보를 업데이트하기 위해서이다. 3분 주기라고 하면, 3분 단위로 서버를 찌르면서 새로운 데이터를 받아온다는 뜻이다. 한 번 데이터를 최신화 시켜주고, 이 3분 동안 정보를 일시적으로 유지시켜주는 것이다.
ex: 만약 3분 안에 갑자기 10000명이 접속해서 상품이 품절됐다면? 검색 결과에는 품절로 뜨지 않고 계속 판매 중인 상태처럼 노출되고 결제만 실패하게 된다. (결제는 [결제하기] 버튼을 클릭 시에 재고를 찌르기 때문이다.) 그리고 3분 뒤에 품절로 검색 결과에서 미노출 되는 것이다. |
4. 스코어 점수를 의도에 따라 조정할 수 있다.
boost 점수라고 하는데, 검색엔진에서 계산한 로직에 부스트 점수를 추가하여 로직을 설계할 수 있다. 우리 서비스에서 고객에게 더 좋은 경험을 선사하기 위해 점수를 조정하는 단계이다. 이는 대외비이기에 자세하게 설명할 순 없지만, 서비스를 대략 탐색하다 보면 어느 정도는 알 수 있다.
많은 커머스에서는 할인율이 높은 서비스부터 상단에 노출시켜주기도 하고, 많이 구매한 순서에 따라 가중치를 두기도 한다.
ex: 똑같은 스코어를 갖고 있는 상품이어도 “빠른배송”에 부스트 점수를 준다면, 빠른 배송을 하는 상품이 더 상단에 노출되는 것이다. |
결국 이는 비즈니스 목표와도 연결되어 있기에 지속적으로 개선과 모니터링이 필요하다.
이번 검색 기획을 통해 느낀 건, 검색은 커머스의 핵심 기능이라는 것이다. 목적형 유저와 탐색형 유저의 UX 패턴은 조금씩 상이하겠지만 결국 결제의 7-80%는 검색을 통해 전환된 유저이기 때문이다. 그렇기에 결제 전환 퍼널을 분석할 때 유의 깊게 봐야 하는 도메인이기도 하다.
지금 설명하는 건 검색의 극히 일부이다. 이 외에도 형태소 분석이나, 검색 어드민 등 검색의 세계는 무궁무진하다. 나 또한 형태소 분석을 더 고도화하고 싶다고 팀장님께 졸랐던 기억이 있다. 다음에 기회가 된다면 이 이야기도 자세하게 풀어보겠다.