[SQL] SQL에서 해커 뉴스 랭킹 알고리즘을 구현
SQLSQL에서 해커 뉴스 랭킹 알고리즘을 구현
폴 그레이엄 해커 뉴스의 순위 알고리즘을 설명하는 방법은 다음과 같습니다
나는 다음과 같은 테이블에 주어진 순수한 MySQL의에서 그렇게하고 싶습니다 :
투표 필드의 아이디어는 투표가 폐지 될 수 있다는 것이다. 순위, 투표의 목적 = 0은 전혀 투표에 해당합니다. (모든 투표 upvotes가 downvotes 같은 것은 없습니다.)
문제는 N postIDs가, 폴 그레이엄의 공식으로 분류 상단을 반환하는 쿼리를 만드는 방법입니다. 약 100,000 게시물은 당신이 필요합니다 점수 또는 아무것도의 캐싱 생각하는 경우 모두 그래서, 나는 그것에 대해 조언을 듣고 싶네요있다.
(물론 이것은 로켓 과학이 아니다 나는 확실히 그것을 알아낼 수 있지만 난 그냥 그것을 아침 식사, 점심 식사, 저녁 식사를 위해 SQL을 먹는 생각 된 사람을 줄줄 할 수있다. 그리고 StackOverflow에 볼 수있는 귀중한 것 같다.)
관련 질문 :
해결법
-
==============================
1.테스트되지 않은 :
테스트되지 않은 :
SELECT x.* FROM POSTS x JOIN (SELECT p.postid, SUM(v.vote) AS points FROM POSTS p JOIN VOTES v ON v.postid = p.postid GROUP BY p.postid) y ON y.postid = x.postid ORDER BY (y.points - 1)/POW(((UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(x.timestamp))/3600)+2, 1.5) DESC LIMIT n
-
==============================
2.
$sql=mysql_query("SELECT * FROM news ORDER BY ((noOfLike-1)/POW(((UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(created_at))/3600)+2,1.5)) DESC LIMIT 20");
내가 HN 같은 홈 페이지를 만들 수 있도록이 코드는 작동합니다.
뉴스 : 테이블 이름입니다.
noOfLike :이 뉴스와 같은 사용자의 총 #.
created_at : 타임 스탬프 그 뉴스가 게시 된 때
from https://stackoverflow.com/questions/3783892/implementing-the-hacker-news-ranking-algorithm-in-sql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL 서버 테이블 작성 날짜 쿼리 (0) | 2020.06.23 |
---|---|
[SQL] SQL을 복원하면서 psql의 잘못된 명령 \ N (0) | 2020.06.23 |
[SQL] VPN을 통해 다른 도메인에 SQL Server 관리 Studio 2008에서 runas 사용자 (0) | 2020.06.23 |
[SQL] SQL 쿼리는 SQL Server의 교착 상태를 얻기 위해 2008 [중복] (0) | 2020.06.23 |
[SQL] 어디에서와 마찬가지로 play2에 기록 된 SQL 문을 볼 수? (0) | 2020.06.23 |