Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Rankingi (sposób sortowania w bazie danych)
Forum PHP.pl > Forum > PHP
Athlan
Witam.

Zacząłem się zastanawiać, jak rozwiązać rankingi. W różnych serwisach stosowałem różne strategie. Posiadam kolumnę item_rate (średnią) oraz item_rate_votes (ilość oddanych głosów). Defaultowo używałem ORDER item_rating DESC, item_rating_votes DESC (co jest kompletną paranoją i mijaniem się z celem, bo ilość głosów liczy się tylko i tylko wtedy, gdy rating jest identyczny).

Dwa warunki, które już stosowałem:

Aby dostać się do rankingu, musisz mieć X głosów
Zastosowane na lookme.pl w limicie 50 głosów. Minus: jak już się ma te 1000 głosów (czyli ponad 950 nad warunek), wystarczy, że średnia spadnie o 0.01 i już się wylatuje z rankingu. Czyli ilość głosów nie ma znaczenia (minus, bo niesprawiedliwe).

Mnożnik (ranga)
Algorytm wygląda prosto. Nie sortujemy wyników po kolumnie item_rate tylko obliczamy:
SELECT ( item_rate + ((item_rate * item_rate_count) / 10) ) AS item_position
Praktycznie same plusy. Minus: musimy określić dzielnik, który może okazać się mało precyzyjny (w tym przypadku 10).

Jak rozwiązujecie problem rankingów?
legorek
Bardziej niż z PHP zagadnienie związane raczej jest ze statystyką. Zobacz sobie jak robi to np IMDB (opis na dole strony). Prawdopodobnie jest to najbardziej sprawiedliwy sposób.
Athlan
Nie rozumiem tylko literki C we wzorze. Czy ma to być średnia wszystkich średnich, czy średnia wszystkich średnich zawartej już w top tabeli.
legorek
To pierwsze: średnia wszystkich ocen.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.