Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Rankingi (sposób sortowania w bazie danych), algorytm
Athlan
post 22.07.2008, 13:58:07
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?


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
legorek
post 22.07.2008, 15:16:42
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
Athlan
post 22.07.2008, 17:36:06
Post #3





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.


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
legorek
post 23.07.2008, 10:19:02
Post #4





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

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


To pierwsze: średnia wszystkich ocen.


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 01:42