![]() |
![]() |
![]() ![]()
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? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Developerzy Postów: 823 Pomógł: 12 Dołączył: 18.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
Nie rozumiem tylko literki C we wzorze. Czy ma to być średnia wszystkich średnich, czy średnia wszystkich średnich zawartej już w top tabeli.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 13:38 |