Skocz do zawartości

Jak sortować pozycje w rankingu ?


holee

Rekomendowane odpowiedzi

Witam;

Mam pewien problem, tworzę właśnie ranking pewnych produktów i nie mam pojęcia jakim algorytmem je posortować.

Każdy produkt jest oceniany od 1 do 10, w bazie przechowuje sumę ocen i ilość ocen. I podpowiedzcie mi proszę jakim sposobem to posortować aby ranking był wiarygodny ?

Żeby produkt z jedną oceną na dziewiątkę nie był wyżej w rankingu od produktu ocenionego 20 razy ze średnią np. 8.9.

Szukam w necie i znaleźć nie mogę, znalazłem coś na php.pl, ale jakoś te rozwiązania nie pasują mi.

Liczę na Waszą pomoc.

Pozdrawiam

Niedrogie wpisy w płatnych, zadbanych, długowiecznych katalogach (hurtem taniej - pisać na PW):

Odnośnik do komentarza
Udostępnij na innych stronach

No inaczej tego nie zrobisz. Musisz przyjąć jakąś ustaloną liczbę od ilu głosów mają się pojawiać/byc uwzględniane w rankingu.

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Mion, inaczej można. Np. mnożąc średnią głosów przez wartość funkcji asymtotycznie dążącej od 0 do 1. (np. 1 - a^(-b*x))

a,b współczynniki, x - liczba głosów, ^ znak potęgi. Dobierając odpowiednio a i b można 'gładko' osiągnąć efekt 'granicy', np. można przyjąć, że dla wartości granicznej, od której zaczęlibyśmy wyświetlać wyniki głosowania funkcja ma przyjąć wartość 0.9 (lub inną zbliżoną do 1)

Takie rozwiązanie o tyle trudniejsze, że a) trzeba zręcznie dobrać funkcję. ;) trzeba ją wyliczać za każdym razem kiedy ktoś głosuje i trzymać gdzieś wynik (można oczywiście liczyć na bieżąco ale szkoda mocy obliczeniowej). c) obliczanie wyniku będzie prawdopodobnie nie bardzo jasne dla użytkowników.

Odnośnik do komentarza
Udostępnij na innych stronach

No ok, powiedzmy że przyjmę jakąś granicę, ale co mi to da ? W końcu za jakiś czas ta granica zostanie przekroczona przez większość produktów i nadal będę miał problem.

@papieros Twój sposób jest ciut zakręcony ;)

Wolałbym sortować na podstawie tych danych jakie posiadam już w bazie.

Pozdrawiam

Niedrogie wpisy w płatnych, zadbanych, długowiecznych katalogach (hurtem taniej - pisać na PW):

Odnośnik do komentarza
Udostępnij na innych stronach

Zwiększy to obiektywność Twojej ankiety. Bez tego produkt na który przykładowo głosowało dwie osoby po 9pkt będzie bardzo wysoko, a inny na który 2gosowaly po 9, ale reszta 4,6,6,8 itd. niżej w rankingu.

Im więcej userow zagłosuje, tym dana ankieta robi się bardziej wiarygodna i dlatego musisz przyjąć jakiś dolny pułap liczby głosów powyżej którego są brane pod uwagę. Jak już ten pułap zostanie przekroczony będzie wystarczająco danych aby można przyjąć, że jest to w miarę obiektywne, a nie subiektywne 2 glosy po 9 pkt :)

Najłatwiej sobie to wyobrazić w ankiecie takich jak na fotka w klimacie "oceń mnie".

Dziewczyna na którą oddano tylko 1 glos 10 pkt była by tak samo wysoko jak inna na którą oddano 100 głosów po 10pkt, ale które ocena będzie bardziej obiektywna ?....

Pozdrawiam

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Mion, czy według Ciebie najlepszym rozwiązaniem będzie na przykład sortowanie po sumie i ilości głosów, przy warunku że wyświetlany wyłącznie produkty o średniej np. ponad 5 ?

Pozdrawiam

Niedrogie wpisy w płatnych, zadbanych, długowiecznych katalogach (hurtem taniej - pisać na PW):

Odnośnik do komentarza
Udostępnij na innych stronach

Najprościej jest zapisywać to do 3 kolumn

int glosowan | int suma_ocen | float ocena

i jak glosuje odpowiednio wprowadzasz dane mając już gotową ocenę wtedy w zapytaniu wystarczy

SELECT ... WHERE glosowan > 20 ORDER BY ocena DESC;

I masz gotowe dane do wyswietlenia w petli...

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Wolałbym sortować na podstawie tych danych jakie posiadam już w bazie

Wszystkie dane posiadasz w bazie. Mnozysz je tylko przez zgóry ustaloną funkcję. Nie będę się upierał przy tym sposobie bo głosowanie na cośtam to nie sprawa życia i śmierci tym bardziej, że im więcej osób głosuje tym rzecz/produkt/gadżet wydaje się ciekawszy i te, na które jest mało osób można pominąć ... no chyba, że nówki, to wtedy bym dał kategorię 'nowe' aby dać im szansą na wybicie się.

Odnośnik do komentarza
Udostępnij na innych stronach

Witam;

Mam pewien problem, tworzę właśnie ranking pewnych produktów i nie mam pojęcia jakim algorytmem je posortować.

Każdy produkt jest oceniany od 1 do 10, w bazie przechowuje sumę ocen i ilość ocen.

Do tej pory chyba wszystko jasne

Zajmuję się optymalizację oraz pozycjonowaniem stron internetowych, wystawiam F.Vat. Proszę śmiało pisać, dzwonić, chętnie odpowiem na wszelkie pytania, wycenię frazy, doradzę.

https://websy.pl/ kontakt@websy.pl, tel: 697715522, NIP: 716-254-81-05, REGON: 060330653

Odnośnik do komentarza
Udostępnij na innych stronach

if x(suma) >= 9 and y(suma) < 9

...

Zajmuję się optymalizację oraz pozycjonowaniem stron internetowych, wystawiam F.Vat. Proszę śmiało pisać, dzwonić, chętnie odpowiem na wszelkie pytania, wycenię frazy, doradzę.

https://websy.pl/ kontakt@websy.pl, tel: 697715522, NIP: 716-254-81-05, REGON: 060330653

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności