팁이라고 하기엔 애매해서 그냥 자유게시판에 썰을 풀어봅니다.

 

일단 지난 XE콘테스트였나요? 거기 출품작인 핫 게시물 애드온을 유용하게 사용하고 있습니다.

 

하지만, 뭐랄까.. 인기글 선정 기준이 좀 더 세분화되었으면.. 좋겠다라는.. 생각을 하게 되어

 

저만의 알고리즘(이라고 할 것도 없음..)을 만들게 됩니다.

 

네 바로 그것은 바로 특정 조건에 점수를 부여하여 합산해서 정렬하는 것 입니다.

 

 

일단.. 제 사이트의 경우 활동하는 회원이 거의 없다시피 하다보니,,, 좀더 여유로운 조건을 주었습니다.

 

조회수 1회당 저는 0.001점을 부여하였고,

댓글의 경우 1점을 부여하였습니다.

그리고 추천의 경우 가장 높은 배점인 5점을 설정하였습니다.

 

그리고 시간이 경과함에 따라 그 비율이 감소 혹은 증가하도록 설정했지요

 

코드를 보면 이렇게 됩니다.

 

foreach($output->data as $key => $val) {
$output->data[$key]->is_notice = 'Y';
$readed = $output->data[$key]->readed_count;
$comment = $output->data[$key]->comment_count;
$voted = $output->data[$key]->voted_count;

//시간에 흐름에 따라 포인트 변신!
$sep_date = zDate($output->data[$key]->regdate,'YmdHis');
$to_date = date("YmdHis");
$day = intval((strtotime($to_date)-strtotime($sep_date)) / 86400);


if($day < 15) $px = 2;
else if($day < 30) $px = 1.5;
else if($day < 60) $px = 1;
else if($day < 90) $px = 0.5;
else if($day < 120) $px = 0.1;
else if($day < 150) $px = 0.08;
else if($day < 180) $px = 0.06;
else if($day < 210) $px = 0.04;
else if($day < 240) $px = 0.02;
else if($day < 360) $px = 0.008;
else $px = 0.005;

$hotPoint = ($readed * 0.001 + $comment * 1 + $voted * 5) * $px;


$output->data[$key]->hot_point = $hotPoint;
$hot_point[$key] = $hotPoint;
}

array_multisort($hot_point, SORT_DESC, $output->data);

foreach($output->data as $key => $val) {
if($key >= $addon_info->list_count){
unset($output->data[$key]);
}else{
$regdate[$key] = $output->data[$key]->regdate;
}
}

array_multisort($regdate, SORT_DESC, $output->data);

 

점수를 기준으로 정렬을 재정렬해주면 끝..!

 

하지만, 기본적으로 기간을 설정하지 않으면 전체글을 대상으로 하니 부담이 될 수도 있습니다..

 

그래서 기존 날짜 설정을 융통성 있게 설정해야하지요.. 아마 저는 60일인가..180일인가로 한 것 같습니다.

 

왜냐면,, 워낙 사이트가 널널하다보니...ㅎㅎㅎ

 

 

이렇게 설정하고 나니 적은 활동수이지만, 인기글이 잘 설정되더라구요..ㅎㅎ

 

아직은 연구가 더 필요해보이지만,, ㅎㅎ

 

하늘희

profile
てててててて
  • ?
    각각의 항목에 점수를 준다는 생각은 못했는데 재밌네요 ㅎㅎ
  • ? profile
    가장 중점인 포인트는 바로 기간에 따른 가산점입니다.

    보통 최근 글이 인기글이 되기 어렵다보니

    최근글에 많은 가산점을 주고 시간이 경과한 글은 감산하여 쉽게 인기글을 노출할 수 있게 하였습니다. ㅎㅎ

    물론 여러 항목을 점수화 한 것도 하나에 취중하지 않기 위험이구요
    ㅎㅎ