이번 프로젝트에서 실시간 인기 검색어를 구현하기 위해서 사용해야 하는 알고리즘을 분석하고, 구현하기 위해 해당 포스팅을 작성하게 되었습니다.
우선 인기 검색어 기능을 구현하기 위해 고려해야 하는 점은 밑과 같습니다.
최근에 검색된 검색어에 더 높은 가중치
를 적용합니다.score 는 24시간 동안 검색량 대비 최근 검색량의 비율을 나타내며, 점수가 높을 수록 지난 24시간보다 검색 빈도가 더 높다는 것을 의미합니다.
double recentlyScore = 1시간 검색 횟수 * 0.15 + 전체 검색 횟수 * 0.05
double dayScore = 일일 검색 횟수 * 0.12 + 전체 검색 횟수 * 0.04
double weekScore = 일주일간 검색 횟수 * 0.04 + 전체 검색 횟수 * 0.03
double score = ( recentlyScore + dayScore + weekScore )
1시간 검색량 : 8.00 1일 검색량 : 7.00 주간 검색률 : 3.00 전체 검색량 : 30.00 점수 : 5.760000000000
1시간 검색량 : 10.00 1일 검색량 : 12.00 주간 검색률 : 15.00 전체 검색량 : 30.00 점수 : 7.140000000000
1시간 검색량 : 8.00 1일 검색량 : 11.00 주간 검색률 : 20.00 전체 검색량 : 30.00 점수 : 6.920000000000
1시간 검색량 : 7.00 1일 검색량 : 19.00 주간 검색률 : 21.00 전체 검색량 : 30.00 점수 : 7.770000000000
1시간 검색량 : 12.00 1일 검색량 : 14.00 주간 검색률 : 19.00 전체 검색량 : 30.00 점수 : 7.840000000000
1시간 검색량 : 15.00 1일 검색량 : 22.00 주간 검색률 : 28.00 전체 검색량 : 30.00 점수 : 9.610000000000
1시간 검색량 : 3.00 1일 검색량 : 24.00 주간 검색률 : 28.00 전체 검색량 : 30.00 점수 : 8.050000000000
1시간 검색량 : 6.00 1일 검색량 : 28.00 주간 검색률 : 30.00 전체 검색량 : 30.00 점수 : 9.060000000000
1시간 검색량 : 13.00 1일 검색량 : 13.00 주간 검색률 : 30.00 전체 검색량 : 30.00 점수 : 8.310000000000
1시간 검색량 : 1.00 1일 검색량 : 30.00 주간 검색률 : 30.00 전체 검색량 : 30.00 점수 : 8.550000000000
우선순위 큐
에다가 보관합니다. ( 점수에 따른 내림차순 정렬 O ( NlogN ) )참고 블로그 1 : https://seungjjun.tistory.com/283