Jestem zainteresowany wykorzystaniem tego ranking class, opartego na artykule od Evan Miller, aby ustawić tabelę, która ma upvotes i downvotes. Mam system bardzo podobny do systemu głosowania w górę/w dół Stack Overflow dla strony z wydarzeniami, nad którą pracuję, i używając tej klasy rankingowej mam wrażenie, że wyniki będą dokładniejsze. Moje pytanie brzmi: jak zamawiać przez funkcję "hotness"?Rankingi pozycji, kolejność według ufności za pomocą algorytmu Reddit Ranking
private function _hotness($upvotes = 0, $downvotes = 0, $posted = 0) {
$s = $this->_score($upvotes, $downvotes);
$order = log(max(abs($s), 1), 10);
if($s > 0) {
$sign = 1;
} elseif($s < 0) {
$sign = -1;
} else {
$sign = 0;
}
$seconds = $posted - 1134028003;
return round($order + (($sign * $seconds)/45000), 7);
}
Przypuszczam każdym razem, gdy użytkownik mógł głosów Mam kolumnę w moim stole, który ma dane Hotness przeliczane na nowe głosowanie, i aby przez ten kolumnie na stronie głównej. Ale jestem zainteresowany, aby zrobić to bardziej "w locie", wykorzystując powyższą funkcję, i nie jestem pewien, czy to możliwe.
Od Evan Miller, używa:
SELECT widget_id, ((positive + 1.9208)/(positive + negative) -
1.96 * SQRT((positive * negative)/(positive + negative) + 0.9604)/
(positive + negative))/(1 + 3.8416/(positive + negative))
AS ci_lower_bound FROM widgets WHERE positive + negative > 0
ORDER BY ci_lower_bound DESC;
Ale ja raczej nie robić tego obliczenia w sql jak czuję, że to jest bałagan i trudno zmienić w dół linię gdybym wykorzystać ten kod na wielu stronach. itp.
Spójrz na to, może ci to pomóc. http://blog.glocal.com/2012/12/tuning-your-own-reddit-style-ranking.html – Grigor