SQL

SQL 분석 실습_Understanding Search Functionality

potatode 2022. 1. 20. 01:36

[무료] [백문이불여일타] 데이터 분석을 위한 SQL 실전편 (무료 미니 코스) - 인프런 | 강의 (inflearn.com)

 

[무료] [백문이불여일타] 데이터 분석을 위한 SQL 실전편 (무료 미니 코스) - 인프런 | 강의

SQL은 실무에서 어떻게 활용되고 있을까요? Microsoft의 Yammer 서비스의 실제 데이터를 이용하여 문제를 해결하는 데이터 분석가가 되어봅시다., 백문이불여일타! SQL & 데이터 분석실무에 더 가깝게

www.inflearn.com

위의 강의를 듣고 정리한 내용입니다.


Understanding Search Functionality | SQL Analytics Training - Mode

 

Understanding Search Functionality | SQL Analytics Training - Mode

In this lesson we'll cover: Before starting, be sure to read the overview to learn a bit about Yammer as a company. The product team is determining priorities for the next development cycle and they are considering improving the site's search functionality

mode.com

위 사이트의 데이터를 사용하며 , 해당 사이트에서만 SQL 사용이 가능합니다. (가입 필요)

 

☑️ 문제 상황

프로덕트 팀이 개발 사이클에서 우선순위를 정해 어떤 개발을 먼저 진행할지 논의하고자 한다.

우선 검색 기능을 개선해 보고 싶어 하며, 개선을 실제로 해야 한다면 어떤 부분을 고쳐야 할지 등 검색 기능 전반에 대한 인사이트 얻고 싶어 한다.

검색 기능에 만족하고 있는지 정량적으로 측정하는 방법에 대해 많이 고민하는 것이 중요!

 

☑️ 가설 설정

1. 검색 기능을 실제로 많이 사용하는가? ⭐⭐⭐

2. 한 번 들어왔을 때 검색 기능을 사용하는 빈도는 얼마나 되는지

➡️ 검색 기능이 유용해서 자주 사용할 수도 있지만, 짧은 시간 동안 여러 번 사용하는 경우 원하는 결과를 찾지

못해서 빈도가 높을 수도 있음

3. 검색 후 클릭 횟수는 몇 회인가

➡️ 클릭 횟수가 높다는 것은 원하는 결과를 찾지 못한 것일까

4. 클릭 결과는 리스트 중 몇 번째에 위치하는지

5. 자동 검색 기능이 존재하는데 이 또한 자주 사용하는지

➡️ 이를 살펴보기 위해 분석 시 자동 검색 기능과 기본 검색 기능을 각각 살펴보기로 한다.

 

☑️ 분석

 

일단 대부분의 분석 기준이 세션이기 때문에 세션을 구하는 쿼리를 먼저 파악하는 것이 좋을 것 같다.

세션의 정의를 검색해 보면 세션이란 지정된 기간 내에 웹사이트에서 발생한 사용자 상호작용의 집합이라고 나오는데 여기서는 10분 이상 움직임이 없는 경우가 생긴다면 세션이 종료되며, 다음 움직임이 생기면 다음의 세션으로 정의한다.

select user_id, session, min(occurred_at) as session_start,
    max(occurred_at) as session_end
from (
  SELECT bounds.*,
    case when last_event >= interval '10 minute' then id
          when last_event is null then id
          else lag(id,1) over (partition by user_id order by occurred_at) end as session
  from (
    select user_id, event_type,event_name, occurred_at
      ,occurred_at- lag(occurred_at,1) over (partition by user_id order by occurred_at) as last_event,
      lead(occurred_at,1) over (partition by user_id order by occurred_at) -occurred_at as next_event,
      row_number() over () as id
    from tutorial.yammer_events e 
    where e.event_type = 'engagement'
    order by user_id, occurred_at) bounds
    where last_event >=interval '10 minute'
      or next_event >=interval '10 minute'
      or last_event is NULL
      or next_event is null
    ) final
group by 1,2

그러면 이러한 결과가 나오며 세션의 시작 시간, 마지막 시간을 구할 수 있다.

앞으로 살펴볼 대부분의 분석은 이 쿼리를 left join 해서 사용하게 된다.

 

1. 검색 기능 사용 여부

검색 기능을 사용하는지 자동 검색과 기본 검색을 나누어 분석해 보았다.

SELECT DATE_TRUNC('week',z.session_start) AS week, 
       COUNT(CASE WHEN z.autocompletes > 0 THEN z.session ELSE NULL END) as autocompletes,
       COUNT(CASE WHEN z.runs > 0 THEN z.session ELSE NULL END) as runs,
       COUNT(*) AS sessions,
       COUNT(CASE WHEN z.autocompletes > 0 THEN z.session ELSE NULL END)/COUNT(*)::FLOAT AS with_autocompletes,
       COUNT(CASE WHEN z.runs > 0 THEN z.session ELSE NULL END)/COUNT(*)::FLOAT AS with_runs
  FROM (
    SELECT x.session_start,
           x.session,
           x.user_id,
           COUNT(CASE WHEN x.event_name = 'search_autocomplete' THEN x.user_id ELSE NULL END) AS autocompletes,
           COUNT(CASE WHEN x.event_name = 'search_run' THEN x.user_id ELSE NULL END) AS runs,
           COUNT(CASE WHEN x.event_name LIKE 'search_click_%' THEN x.user_id ELSE NULL END) AS clicks
      FROM (
        SELECT e.*,
             session.session,
             session.session_start
        FROM tutorial.yammer_events e
        LEFT JOIN (
        select user_id, session, min(occurred_at) as session_start,
            max(occurred_at) as session_end
        from (
          SELECT bounds.*,
            case when last_event >= interval '10 minute' then id
                  when last_event is null then id
                  else lag(id,1) over (partition by user_id order by occurred_at) end as session
          from (
            select user_id, event_type,event_name, occurred_at
              ,occurred_at- lag(occurred_at,1) over (partition by user_id order by occurred_at) as last_event,
              lead(occurred_at,1) over (partition by user_id order by occurred_at) -occurred_at as next_event,
              row_number() over () as id
            from tutorial.yammer_events e 
            where e.event_type = 'engagement'
            order by user_id, occurred_at) bounds
            where last_event >=interval '10 minute'
              or next_event >=interval '10 minute'
              or last_event is NULL
              or next_event is null
            ) final
          group by 1,2
            ) session
        ON e.user_id = session.user_id
          AND e.occurred_at >= session.session_start
          AND e.occurred_at <= session.session_end
        WHERE e.event_type = 'engagement'
             ) x
     GROUP BY 1,2,3
           ) z
  GROUP BY 1
  ORDER BY 1

해당 주차에 발생한 전체 세션 중 자동 검색을 1번 이상 사용한 사람과

기본 검색을 1번 이상 사용한 사람을 추출했다.

자동 검색, 기본 검색을 사용했는지는 event_name 칼럼을 통해 파악 가능하다.

 

전체 세션의 약 23.7% 정도는 자동 검색을 사용하며, 8.1%는 기본 검색을 사용하는 것으로 나타났다.

자동 검색 기능을 활용하는 사람이 더 많은 것으로 보인다.


2. 한 세션 당 검색 횟수

자동 검색 기능을 사용한 사람들의 검색 횟수를 살펴보면

SELECT autocompletes,
       COUNT(*) AS sessions
  FROM (
SELECT x.session_start,
       x.session,
       x.user_id,
       COUNT(CASE WHEN x.event_name = 'search_autocomplete' THEN x.user_id ELSE NULL END) AS autocompletes,
       COUNT(CASE WHEN x.event_name = 'search_run' THEN x.user_id ELSE NULL END) AS runs,
       COUNT(CASE WHEN x.event_name LIKE 'search_click_%' THEN x.user_id ELSE NULL END) AS clicks
  FROM (
SELECT e.*,
       session.session,
       session.session_start
  FROM tutorial.yammer_events e
  LEFT JOIN (
       SELECT user_id,
              session,
              MIN(occurred_at) AS session_start,
              MAX(occurred_at) AS session_end
         FROM (
              SELECT bounds.*,
              		    CASE WHEN last_event >= INTERVAL '10 MINUTE' THEN id
              		         WHEN last_event IS NULL THEN id
              		         ELSE LAG(id,1) OVER (PARTITION BY user_id ORDER BY occurred_at) END AS session
                FROM (
                     SELECT user_id,
                            event_type,
                            event_name,
                            occurred_at,
                            occurred_at - LAG(occurred_at,1) OVER (PARTITION BY user_id ORDER BY occurred_at) AS last_event,
                            LEAD(occurred_at,1) OVER (PARTITION BY user_id ORDER BY occurred_at) - occurred_at AS next_event,
                            ROW_NUMBER() OVER () AS id
                       FROM tutorial.yammer_events e
                      WHERE e.event_type = 'engagement'
                      ORDER BY user_id,occurred_at
                     ) bounds
               WHERE last_event >= INTERVAL '10 MINUTE'
                  OR next_event >= INTERVAL '10 MINUTE'
               	 OR last_event IS NULL
              	 	 OR next_event IS NULL   
              ) final
        GROUP BY 1,2
       ) session
    ON e.user_id = session.user_id
   AND e.occurred_at >= session.session_start
   AND e.occurred_at <= session.session_end
 WHERE e.event_type = 'engagement'
       ) x
 GROUP BY 1,2,3
       ) z
 WHERE autocompletes > 0
 GROUP BY 1
 ORDER BY 1

자동 검색 사용 횟수 별 사용자 수를 추출하는 쿼리이다.

 

자동 검색을 이용한 사람 중 58% 정도가 한 세션 중 1회의 자동 검색을 사용한 것으로 나타났다.

다음으로 기본 검색을 사용한 사람을 추출하려고 한다.

위의 쿼리에서 맨 첫 번째 select의 autocompletes를 runs로, 밑에서 3번째 줄에 있는 where 절의 autocompletes를 runs로 바꾸어주면 된다.

SELECT runs,
       COUNT(*) AS sessions
  FROM (
SELECT x.session_start,
       x.session,
       x.user_id,
       COUNT(CASE WHEN x.event_name = 'search_autocomplete' THEN x.user_id ELSE NULL END) AS autocompletes,
       COUNT(CASE WHEN x.event_name = 'search_run' THEN x.user_id ELSE NULL END) AS runs,
       COUNT(CASE WHEN x.event_name LIKE 'search_click_%' THEN x.user_id ELSE NULL END) AS clicks
  FROM (
SELECT e.*,
       session.session,
       session.session_start
  FROM tutorial.yammer_events e
  LEFT JOIN (
       SELECT user_id,
              session,
              MIN(occurred_at) AS session_start,
              MAX(occurred_at) AS session_end
         FROM (
              SELECT bounds.*,
              		    CASE WHEN last_event >= INTERVAL '10 MINUTE' THEN id
              		         WHEN last_event IS NULL THEN id
              		         ELSE LAG(id,1) OVER (PARTITION BY user_id ORDER BY occurred_at) END AS session
                FROM (
                     SELECT user_id,
                            event_type,
                            event_name,
                            occurred_at,
                            occurred_at - LAG(occurred_at,1) OVER (PARTITION BY user_id ORDER BY occurred_at) AS last_event,
                            LEAD(occurred_at,1) OVER (PARTITION BY user_id ORDER BY occurred_at) - occurred_at AS next_event,
                            ROW_NUMBER() OVER () AS id
                       FROM tutorial.yammer_events e
                      WHERE e.event_type = 'engagement'
                      ORDER BY user_id,occurred_at
                     ) bounds
               WHERE last_event >= INTERVAL '10 MINUTE'
                  OR next_event >= INTERVAL '10 MINUTE'
               	 OR last_event IS NULL
              	 	 OR next_event IS NULL   
              ) final
        GROUP BY 1,2
       ) session
    ON e.user_id = session.user_id
   AND e.occurred_at >= session.session_start
   AND e.occurred_at <= session.session_end
 WHERE e.event_type = 'engagement'
       ) x
 GROUP BY 1,2,3
       ) z
 WHERE runs > 0
 GROUP BY 1
 ORDER BY 1

기본 검색 기능을 1번만 사용한 세션은 11%로 자동 검색 기능보다 훨씬 적었다.

2번, 3번 사용한 세션은 약 20% 정도였다.


3. 검색 결과 클릭 분포

검색 기능을 사용한 사람들 중 '결과 클릭' 횟수를 알아보고자 한다.

자동 검색을 사용한 사람들의 클릭 횟수를 먼저 추출해 보았다.

SELECT clicks,
       COUNT(*) AS sessions
  FROM (
SELECT x.session_start,
       x.session,
       x.user_id,
       COUNT(CASE WHEN x.event_name = 'search_autocomplete' THEN x.user_id ELSE NULL END) AS autocompletes,
       COUNT(CASE WHEN x.event_name = 'search_run' THEN x.user_id ELSE NULL END) AS runs,
       COUNT(CASE WHEN x.event_name LIKE 'search_click_%' THEN x.user_id ELSE NULL END) AS clicks
  FROM (
SELECT e.*,
       session.session,
       session.session_start
  FROM tutorial.yammer_events e
  LEFT JOIN (
       SELECT user_id,
              session,
              MIN(occurred_at) AS session_start,
              MAX(occurred_at) AS session_end
         FROM (
              SELECT bounds.*,
              		    CASE WHEN last_event >= INTERVAL '10 MINUTE' THEN id
              		         WHEN last_event IS NULL THEN id
              		         ELSE LAG(id,1) OVER (PARTITION BY user_id ORDER BY occurred_at) END AS session
                FROM (
                     SELECT user_id,
                            event_type,
                            event_name,
                            occurred_at,
                            occurred_at - LAG(occurred_at,1) OVER (PARTITION BY user_id ORDER BY occurred_at) AS last_event,
                            LEAD(occurred_at,1) OVER (PARTITION BY user_id ORDER BY occurred_at) - occurred_at AS next_event,
                            ROW_NUMBER() OVER () AS id
                       FROM tutorial.yammer_events e
                      WHERE e.event_type = 'engagement'
                      ORDER BY user_id,occurred_at
                     ) bounds
               WHERE last_event >= INTERVAL '10 MINUTE'
                  OR next_event >= INTERVAL '10 MINUTE'
               	 OR last_event IS NULL
              	 	 OR next_event IS NULL   
              ) final
        GROUP BY 1,2
       ) session
    ON e.user_id = session.user_id
   AND e.occurred_at >= session.session_start
   AND e.occurred_at <= session.session_end
 WHERE e.event_type = 'engagement'
       ) x
 GROUP BY 1,2,3
       ) z
 WHERE autocompletes > 0
 GROUP BY 1
 ORDER BY 1

자동 검색을 한 사람 중 클릭을 한 번도 하지 않은 사람은 96%로 대부분이었다.

기본 검색을 한 사람들 중 클릭 횟수를 살펴보기 위해서는 마지막 부분의 where 절을 runs>0 으로만 바꾸면 된다.

SELECT clicks,
       COUNT(*) AS sessions
  FROM (
SELECT x.session_start,
       x.session,
       x.user_id,
       COUNT(CASE WHEN x.event_name = 'search_autocomplete' THEN x.user_id ELSE NULL END) AS autocompletes,
       COUNT(CASE WHEN x.event_name = 'search_run' THEN x.user_id ELSE NULL END) AS runs,
       COUNT(CASE WHEN x.event_name LIKE 'search_click_%' THEN x.user_id ELSE NULL END) AS clicks
  FROM (
SELECT e.*,
       session.session,
       session.session_start
  FROM tutorial.yammer_events e
  LEFT JOIN (
       SELECT user_id,
              session,
              MIN(occurred_at) AS session_start,
              MAX(occurred_at) AS session_end
         FROM (
              SELECT bounds.*,
              		    CASE WHEN last_event >= INTERVAL '10 MINUTE' THEN id
              		         WHEN last_event IS NULL THEN id
              		         ELSE LAG(id,1) OVER (PARTITION BY user_id ORDER BY occurred_at) END AS session
                FROM (
                     SELECT user_id,
                            event_type,
                            event_name,
                            occurred_at,
                            occurred_at - LAG(occurred_at,1) OVER (PARTITION BY user_id ORDER BY occurred_at) AS last_event,
                            LEAD(occurred_at,1) OVER (PARTITION BY user_id ORDER BY occurred_at) - occurred_at AS next_event,
                            ROW_NUMBER() OVER () AS id
                       FROM tutorial.yammer_events e
                      WHERE e.event_type = 'engagement'
                      ORDER BY user_id,occurred_at
                     ) bounds
               WHERE last_event >= INTERVAL '10 MINUTE'
                  OR next_event >= INTERVAL '10 MINUTE'
               	 OR last_event IS NULL
              	 	 OR next_event IS NULL   
              ) final
        GROUP BY 1,2
       ) session
    ON e.user_id = session.user_id
   AND e.occurred_at >= session.session_start
   AND e.occurred_at <= session.session_end
 WHERE e.event_type = 'engagement'
       ) x
 GROUP BY 1,2,3
       ) z
 WHERE runs > 0
 GROUP BY 1
 ORDER BY 1

기본 검색에서 한 번도 클릭하지 않은 사람은 55%로 자동 검색보단 적었지만 절반 이상을 차지했다.


4. 검색을 한 횟수에 따른 평균 클릭 횟수

검색을 여러 번 했다면 클릭 횟수도 높아질까라는 생각에서 나오게 된 분석이다.

자동 검색을 한 횟수에 따른 평균 클릭 횟수를 추출했다.

SELECT autocompletes,
       count(*) as session, AVG(clicks)
  FROM (
SELECT x.session_start,
       x.session,
       x.user_id,
       COUNT(CASE WHEN x.event_name = 'search_autocomplete' THEN x.user_id ELSE NULL END) AS autocompletes,
       COUNT(CASE WHEN x.event_name = 'search_run' THEN x.user_id ELSE NULL END) AS runs,
       COUNT(CASE WHEN x.event_name LIKE 'search_click_%' THEN x.user_id ELSE NULL END) AS clicks
  FROM (
SELECT e.*,
       session.session,
       session.session_start
  FROM tutorial.yammer_events e
  LEFT JOIN (
       SELECT user_id,
              session,
              MIN(occurred_at) AS session_start,
              MAX(occurred_at) AS session_end
         FROM (
              SELECT bounds.*,
              		    CASE WHEN last_event >= INTERVAL '10 MINUTE' THEN id
              		         WHEN last_event IS NULL THEN id
              		         ELSE LAG(id,1) OVER (PARTITION BY user_id ORDER BY occurred_at) END AS session
                FROM (
                     SELECT user_id,
                            event_type,
                            event_name,
                            occurred_at,
                            occurred_at - LAG(occurred_at,1) OVER (PARTITION BY user_id ORDER BY occurred_at) AS last_event,
                            LEAD(occurred_at,1) OVER (PARTITION BY user_id ORDER BY occurred_at) - occurred_at AS next_event,
                            ROW_NUMBER() OVER () AS id
                       FROM tutorial.yammer_events e
                      WHERE e.event_type = 'engagement'
                      ORDER BY user_id,occurred_at
                     ) bounds
               WHERE last_event >= INTERVAL '10 MINUTE'
                  OR next_event >= INTERVAL '10 MINUTE'
               	 OR last_event IS NULL
              	 	 OR next_event IS NULL   
              ) final
        GROUP BY 1,2
       ) session
    ON e.user_id = session.user_id
   AND e.occurred_at >= session.session_start
   AND e.occurred_at <= session.session_end
 WHERE e.event_type = 'engagement'
       ) x
 GROUP BY 1,2,3
       ) z
 WHERE autocompletes > 0
 GROUP BY 1
 ORDER BY 1

검색 횟수가 많아질수록 클릭 횟수가 1에 가까워지긴 했지만 session 수를 보면

 

검색 횟수가 10일 때 평균 클릭 횟수는 1이 넘지만 session의 수는 19개로 적은 편이어서 클릭 횟수가 높다고 확실하게 말할 수는 없을 것 같다.

기본 검색 횟수를 살펴보면

SELECT runs,
         count(*) as session, AVG(clicks)
  FROM (
SELECT x.session_start,
       x.session,
       x.user_id,
       COUNT(CASE WHEN x.event_name = 'search_autocomplete' THEN x.user_id ELSE NULL END) AS autocompletes,
       COUNT(CASE WHEN x.event_name = 'search_run' THEN x.user_id ELSE NULL END) AS runs,
       COUNT(CASE WHEN x.event_name LIKE 'search_click_%' THEN x.user_id ELSE NULL END) AS clicks
  FROM (
SELECT e.*,
       session.session,
       session.session_start
  FROM tutorial.yammer_events e
  LEFT JOIN (
       SELECT user_id,
              session,
              MIN(occurred_at) AS session_start,
              MAX(occurred_at) AS session_end
         FROM (
              SELECT bounds.*,
              		    CASE WHEN last_event >= INTERVAL '10 MINUTE' THEN id
              		         WHEN last_event IS NULL THEN id
              		         ELSE LAG(id,1) OVER (PARTITION BY user_id ORDER BY occurred_at) END AS session
                FROM (
                     SELECT user_id,
                            event_type,
                            event_name,
                            occurred_at,
                            occurred_at - LAG(occurred_at,1) OVER (PARTITION BY user_id ORDER BY occurred_at) AS last_event,
                            LEAD(occurred_at,1) OVER (PARTITION BY user_id ORDER BY occurred_at) - occurred_at AS next_event,
                            ROW_NUMBER() OVER () AS id
                       FROM tutorial.yammer_events e
                      WHERE e.event_type = 'engagement'
                      ORDER BY user_id,occurred_at
                     ) bounds
               WHERE last_event >= INTERVAL '10 MINUTE'
                  OR next_event >= INTERVAL '10 MINUTE'
               	 OR last_event IS NULL
              	 	 OR next_event IS NULL   
              ) final
        GROUP BY 1,2
       ) session
    ON e.user_id = session.user_id
   AND e.occurred_at >= session.session_start
   AND e.occurred_at <= session.session_end
 WHERE e.event_type = 'engagement'
       ) x
 GROUP BY 1,2,3
       ) z
 WHERE runs > 0
 GROUP BY 1
 ORDER BY 1

검색 횟수가 많아질수록 클릭 횟수가 높아짐이 자동 검색보다 더 명확하게 드러났다.

하지만 여기서도 session 수를 파악해 보면

검색 횟수가 높아질수록 session 수도 매우 적은 것이 보인다.

문에 자동 검색과 기본 검색 둘 다 더 많은 검색 실행이 더 많은 클릭으로 이어지지는 않는다라고 해석하기는 어렵다.


5. 클릭 콘텐츠의 순서

검색을 누르면 여러 개의 콘텐츠가 나올 텐데, 그중에서 몇 번째 콘텐츠를 클릭하는지를 알아보았다.

 

SELECT TRIM('search_click_result_' FROM event_name)::INT AS search_result,
       COUNT(*) AS clicks
  FROM tutorial.yammer_events
 WHERE event_name LIKE 'search_click_%'
 GROUP BY 1
 ORDER BY 1
 

 

콘텐츠의 순서는 대체로 고른 편이다.

하지만 1번만 클릭하는 사람이 적으므로 이것과 연관 지어 생각해 보면, 사람들이 검색 결과 여러 개를 클릭하고 있다고 볼 수 있다.

 


☑️ 결론

 

SQL 추출을 통한 분석을 해보았고 간단하게 요약하면

1. 자동 검색 기능은 약 23.7% 정도 사용하며, 기본 검색은 8% 정도 사용하는 것으로 나타났다.

2. 자동 검색과 기본 검색 모두 많은 세션에서 사용되고 있다.

3. 전체 검색을 사용한 사람 중 2회 이상 검색을 한 사람이 88% 정도이다.

4. 검색을 클릭한 횟수는 1번 클릭한 경우보다 여러 번 클릭한 경우가 더 많았다.

5. 클릭 콘텐츠의 순서는 한쪽에 치우쳤다기보단 고른 편이라고 할 수 있다.

 

위에서 내린 가설을 분석과 연관 지어 보면

 

1. 검색 기능을 실제로 많이 사용하는가?

자동 검색과 기본 검색 모두 많은 세션에서 사용되고 있기에 검색은 서비스의 핵심 기능이며, 개선을 더 진행하는 것도 좋을 것이라 생각된다.

하지만 자동 검색을 사용하는 비율과 기본 검색을 사용하는 비율이 어느 정도 차이가 나기에 어떤 것에 더 초점을 두며 개선해나갈지 생각해 볼 필요가 있다.

 

2. 한 번 들어왔을 때 검색 기능을 사용하는 빈도는 얼마나 되는지

자동 검색 기능은 한 번만 검색하는 경우가 절반 정도였지만, 기본 검색 기능은 2~3번 검색하는 경우가 더 많았다.

이를 mode에서는 기본 검색 기능이 좋은 편이 아니라고 해석했지만, 강의에서는 여러 번 찾는 것이 오히려 자연스러울 수 있다고 했다.

나도 여러 번 찾는다고 해서 검색 기능이 나쁘다고 결론짓기보다는 팀원들과 기준을 정해보거나, 더 다양한 분석을 진행해 보는 것이 낫다고 생각한다.

 

3. 검색 후 클릭 횟수는 몇 회인가

자동 검색을 사용한 후 클릭하지 않은 사람은 전체의 96%를 차지했으며, 기본 검색을 사용한 후 클릭하지 않은 사람은 54%로 전체의 절반 정도였다. 이 비율이 높아 보이긴 하지만 무조건 많다고 단정 짓기는 어렵다.

다른 회사들의 기본 검색을 클릭하지 않은 비율이 70% 라면 yammer는 꽤 많은 클릭이 있는 편이라 생각될 수 있다.

그렇기에 비교 군을 선정해서 결론을 내리는 것이 중요하다. (다른 질문도 포함)

또한 검색 횟수가 많아질수록 클릭 횟수가 많아진다는 결과가 나왔지만 검색 횟수가 많은 세션은 100개가 안되는 경우가 많아 표본이 부족해 확실히 결론 내리기는 어려울 것 같다.

 

4. 클릭 결과는 리스트 중 몇 번째에 위치하는지

클릭한 리스트의 순서는 앞부분에 위치한 리스트들이 조금 더 많긴 했지만, 대체로 고른 편이었다.

이는 1번만 클릭하는 사람이 적으므로 이것과 연관 지어 생각해 보면, 사람들이 검색 결과 여러 개를 클릭하고 있다고 볼 수 있다.

콘텐츠를 보여주는 순서(랭킹)의 문제보다, 검색으로 인해 원하는 결과물을 얻지 못하는 문제가 더 클 수 있다고 보았다.

 

 

 

반응형