Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Rankingi (sposób sortowania w bazie danych), algorytm
Athlan
post
Post #1





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
legorek
post
Post #2





Grupa: Zarejestrowani
Postów: 411
Pomógł: 35
Dołączył: 27.06.2004
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 11:20