나눔 게시판의 주사위 알고리즘을 안내 드립니다.
조회 수 5723
추천 수 1

나눔 게시판에 글을 쓰면 주사위 기능이 보입니다.
이 주사위 기능이 어떻게 추첨되는지 알고리즘을 공개합니다.
- 추천
SELECT member_srl
FROM %sdocument_voted_log
WHERE document_srl = %d # 글 번호
AND point > 0
ORDER BY RAND()
LIMIT 1; - 댓글
SELECT member_srl
FROM %scomments
WHERE document_srl = %d # 글 번호
AND member_srl NOT IN (%d,%d) # 작성자, 트레디아_봇 아이디 제외
GROUP BY member_srl
ORDER BY RAND()
LIMIT 1; - 추천+댓글
SELECT voted_log.member_srl member_srl
FROM %sdocument_voted_log voted_log
INNER JOIN %scomments comments
ON comments.document_srl = voted_log.document_srl
AND comments.member_srl = voted_log.member_srl
WHERE voted_log.document_srl = %d # 글 번호
AND voted_log.point > 0
GROUP BY member_srl
ORDER BY RAND() LIMIT 1;
이 공지를 쓰기 좀 전에 주사위 알고리즘에 오류가 있다는 건의를 받았습니다.
확인해보니 실제로 오류가 있었습니다.
그래서 알고리즘에 GROUP BY member_srl 를 붙이고 관련 문제가 해결된 것을 확인했습니다.
개선할 부분을 알려주신다면 가능한 반영토록 하겠습니다.
감사합니다.