2009-06-01 4 views
1

데이터베이스에서 가장 활발한 포럼 스레드 또는 게임을 찾는 좋은 측정 기준은 무엇입니까?가장 활발한 주제 또는 게임 찾기

4chan와 같은 포럼을 운영한다고 가정 해 보겠습니다. 가장 활발한 스레드를 첫 번째 페이지에 표시하려고합니다. last_updated로 주제를 정렬하려고했지만 그 결과는 혼란 스럽습니다. 새로 고침 할 때마다 볼 수있는 스레드는 사실 무작위이며 두 번째 페이지로 건너 뛰면 동일한 결과가 많이 나타날 수 있습니다. 활성 스레드를 결정하는 데 더 안정된 알고리즘이 있어야합니다!

사람들이 게임을보고 볼 수있는 웹 사이트를 운영한다고 가정 해보십시오. 사람들이 첫 페이지를 방문하는 순간이 게임이 얼마나 흥미로운지를 사람들이 알기를 원합니다. 게임에서의 상호 작용은 개별 이벤트를 생성하는 것으로 비등 할 수 있습니다. 그러나 일부 사용자는 매우 느리게 재생되기 때문에 last_updated로 정렬 할 수 없으며 흥미 진진한 게임을 찾고 싶습니다.

보너스 포인트는 최대 활동을 위해 SQL 쿼리를 작성하는 방법이나 서버 측 캐시에서이를 구현할 수있는 방법에 대해 생각해보십시오. 최선의 답변은 데이터를 선동하기 위해 크론 작업이 필요하지 않습니다.

답변

0

확실하게 last_updated (셀프)를 기대할 수는 없지만 모든 활성 스레드에 대해 reply_count/play_count, view_count/played_count를 사용해야합니다. 이제 대부분의 인기 게임을 결정하기 위해 각 게임에 대해 now_playing_count와 같은 필드를 추가해야 할 수도 있습니다.

0

당신과 관련된 문제는 "The Britney Spears Problem"입니다. 이는 알고리즘을 통해 최신 주제를 결정하는 데 어려움이 있습니다. 인공 지능의 관점에서 볼 때, 어려운 문제입니다. 무엇보다도, 고정 된 수의 주제가 없기 때문에 분류가 문제가되지 않기 때문입니다. 그리고 추세가 때때로 바뀌기 때문에 모델은 시간 지연을 요인으로 필요로합니다 (일반적인 Neural Network는 시간 지연 신경망에 대해 언급하지 않는 한). 마지막으로, 무엇이 뜨겁고 주관적이며 사람마다 다르므로 사람의 과거 관심사를 고려해야 할 수도 있습니다 (Collaborative Filtering).

+0

(page 1에하지 클릭, page 2 등) 사용자가 첫 페이지를 새로 고침 유일한 변수 : 최근의 사건 즉, 많이. –

1

포럼 예제에서 가장 뜨거운 스레드는 게시 된 댓글을 기반으로하므로 현재 날짜/주/월에 게시 된 댓글 수를 계산하고 ('핫'이라고 결정한 시간 프레임에 관계없이) 스레드 기반으로 주문합니다. 이에.

SELECT p.id, p.title, COUNT(c.created_at) as count 
FROM posts p, comments c 
WHERE p.id = c.post_id 
AND c.created_at > ***TIME YOU DETERMINE AS HOT*** 
GROUP BY p.id, p.title 
ORDER BY count DESC 

게임 시나리오는

이 ** 당신은 또한 문에 의해 그룹에 있어야하는 선택에 넣어 아무것도주의하는 데이터 모델에 대한 유사한 테이블 설정을 가지고 가정 같은 것 **

0

사이비 코드 :

선택 ID는, 계산에 의해 주제 및 날짜 순서에 따라 그룹을 계산

-1

last_updated별로 정렬 주제를 시도했지만 결과는 혼란 스럽습니다. 새로 고침 할 때마다 볼 수있는 스레드는 사실 무작위이며 두 번째 페이지로 건너 뛰면 동일한 결과가 많이 나옵니다.

당신은 해당 날짜에 작거나 같은 last_updated하여 정확한 사용자가 첫 번째 페이지를 클릭 시간, 순서를 기억할 수는 :

SELECT t.id, t.name, p.last_updated 
FROM threads t 
JOIN posts p 
ON  p.thread_id = t.id 
     AND p.last_updated <= @last_updated 
ORDER BY 
     p.last_updated DESC 

이렇게하면 안정적인 결과 집합을 제공 할 것입니다.

업데이트 난 그냥 활동의 측정을 찾고 있어요

+0

이것은 끔찍한 생각입니다. 이렇게하면 last_updated 타임 스탬프를 설정 한 후에 항목이 업데이트 되었기 때문에 주제가 결과 집합에서 완전히 벗어날 수 있습니다. 즉, 가장 활발한 주제를 전혀 볼 수 없습니다. –