자체적인 추천 시스템을 구축하기에는 서비스가 보유하고 있는 데이터가 적어 대부분 TMDB API에 의존한다. 추후 데이터가 쌓이게 된다면 자체 추천 시스템 구현을 시도해보려고 한다.
선호 장르 기반 추천
회원가입 시 유저가 설정한 선호 장르를 기반으로 작품을 추천한다. TMDB API의 Discover 항목을 사용한다.
API 요청 시 파라미터로 선호 장르들을 OR(|)로 전달하기 때문에 한 번에 다양한 장르의 작품들이 조회될 수 있다.
서비스 활동 기반 추천
유저가 IMAD 서비스에서 활동한 기록들(UserActivity)을 기반으로 작품을 추천한다. 서비스 활동은 작품 북마크, 리뷰 작성/좋아요, 게시글 작성/좋아요 등의 활동을 기록한다.
서비스 활동 기반 추천을 요청할 경우 DB에서 유저 활동 기록을 조회하고, 그 활동에 연결되는 작품들 중 하나를 랜덤으로 선택한다. 이 때 현재 날짜/시간과 가까울수록 높은 가중치를 부여해 최근 활동과 연관된 작품이 선택될 확률을 높인다.
랜덤으로 선택된 작품은 서버에서 TMDB API의 Similar에 요청을 하고 유사한 작품들을 받아와 클라이언트에게 전달한다.
서비스 활동 기반 추천 작품은 타입별(TV, Movie, Animation) 세 가지 항목을 받아온다. Animation의 경우 TMDB 분류상 TV 또는 Movie 둘 중 하나이므로, 응답 데이터에는 tv_animation과 movie_animation 항목이 모두 존재한다. 이 두 항목은 모두 null이거나 하나만 null이다. 두 항목 모두에 데이터가 들어가있는 경우는 없다.
IMAD 자체 추천
TMDB API의 Popular, Top Rated 항목의 작품들을 조회해 전달한다.
트렌드 추천
TMDB API의 Trend 항목의 작품들을 조회해 전달한다.
통신
작품 추천 요청은 크게 일괄 요청과 개별 요청으로 나누어진다.
일괄 요청은 메인 페이지에서 쓰기 위해 만들어진 것으로, 모든 추천 데이터를 일괄적으로 조회한다. 빈번하게 요청할 경우 TMDB API 트래픽의 제한이 생길 수도 있고 서버-클라이언트 간 통신 데이터의 크기도 작지 않기 때문에 캐싱 등을 하는 것을 고려해야 한다.
개별 요청은 각 추천 항목의 데이터를 추가 조회할 때 사용한다. 요청 시 page를 파라미터로 전달할 수 있으며 서버에서는 그에 해당하는 데이터를 가공해 전달한다.
해당 위키 참고
추천 종류
자체적인 추천 시스템을 구축하기에는 서비스가 보유하고 있는 데이터가 적어 대부분 TMDB API에 의존한다. 추후 데이터가 쌓이게 된다면 자체 추천 시스템 구현을 시도해보려고 한다.
선호 장르 기반 추천
회원가입 시 유저가 설정한 선호 장르를 기반으로 작품을 추천한다. TMDB API의
Discover
항목을 사용한다.API 요청 시 파라미터로 선호 장르들을 OR(
|
)로 전달하기 때문에 한 번에 다양한 장르의 작품들이 조회될 수 있다.서비스 활동 기반 추천
유저가 IMAD 서비스에서 활동한 기록들(UserActivity)을 기반으로 작품을 추천한다. 서비스 활동은 작품 북마크, 리뷰 작성/좋아요, 게시글 작성/좋아요 등의 활동을 기록한다.
서비스 활동 기반 추천을 요청할 경우 DB에서 유저 활동 기록을 조회하고, 그 활동에 연결되는 작품들 중 하나를 랜덤으로 선택한다. 이 때 현재 날짜/시간과 가까울수록 높은 가중치를 부여해 최근 활동과 연관된 작품이 선택될 확률을 높인다.
랜덤으로 선택된 작품은 서버에서 TMDB API의
Similar
에 요청을 하고 유사한 작품들을 받아와 클라이언트에게 전달한다.서비스 활동 기반 추천 작품은 타입별(TV, Movie, Animation) 세 가지 항목을 받아온다. Animation의 경우 TMDB 분류상 TV 또는 Movie 둘 중 하나이므로, 응답 데이터에는 tv_animation과 movie_animation 항목이 모두 존재한다. 이 두 항목은 모두 null이거나 하나만 null이다. 두 항목 모두에 데이터가 들어가있는 경우는 없다.
IMAD 자체 추천
TMDB API의
Popular
,Top Rated
항목의 작품들을 조회해 전달한다.트렌드 추천
TMDB API의
Trend
항목의 작품들을 조회해 전달한다.통신
작품 추천 요청은 크게
일괄 요청
과개별 요청
으로 나누어진다.일괄 요청
은 메인 페이지에서 쓰기 위해 만들어진 것으로, 모든 추천 데이터를 일괄적으로 조회한다. 빈번하게 요청할 경우 TMDB API 트래픽의 제한이 생길 수도 있고 서버-클라이언트 간 통신 데이터의 크기도 작지 않기 때문에 캐싱 등을 하는 것을 고려해야 한다.개별 요청
은 각 추천 항목의 데이터를 추가 조회할 때 사용한다. 요청 시page
를 파라미터로 전달할 수 있으며 서버에서는 그에 해당하는 데이터를 가공해 전달한다.