Tworzę witrynę e-commerce i mam problem z opracowaniem dobrego algorytmu sortowania produktów, które są pobierane z bazy danych do połowy odpowiednich grup. Próbowałem po prostu podzielić najwyższą cenę na 4 i oprzeć każdą grupę z tego. Próbowałem także odchyleń standardowych opartych na średniej. Oba mogą wynikać z przedziałów cenowych, do których nie wchodzi żaden produkt, co nie jest przydatną opcją filtrowania.Algorytm grupowania filtrów cenowych
Próbowałem również przyjmować kwartyle produktów, ale moim problemem jest to, że cena waha się od 1 do 4,000 USD. Te 4000 USD prawie nigdy nie sprzedają się i są o wiele mniej ważne, ale wciąż przekreślają moje wyniki.
Jakieś myśli? Powinienem zwrócić większą uwagę w rankingu klasy ...
Aktualizacja:
skończyło się łącząc Metody trochę. Użyłem metody kwartyle/kubełka, ale zhakowałem ją nieco, kodując pewne zakresy, w których pojawiłaby się większa liczba grup cenowych.
//Price range algorithm
sort($prices);
//Divide the number of prices into four groups
$quartilelength = count($prices)/4;
//Round to the nearest ...
$simplifier = 10;
//Get the total range of the prices
$range = max($prices)-min($prices);
//Assuming we actually are working with multiple prices
if ($range>0)
{
// If there is a decent spread in price, and there are a decent number of prices, give more price groups
if ($range>20 && count($prices) > 10)
{
$priceranges[0] = floor($prices[floor($quartilelength)]/$simplifier)*$simplifier;
}
// Always grab the median price
$priceranges[1] = floor($prices[floor($quartilelength*2)]/$simplifier)*$simplifier;
// If there is a decent spread in price, and there are a decent number of prices, give more price groups
if ($range>20 && count($this->data->prices) > 10)
{
$priceranges[2] = floor($prices[floor($quartilelength*3)]/$simplifier)*$simplifier;
}
}
Wygląda na to, że jeśli wzbogacisz informacje o produkcie (zawiera tylko ceny) wraz z rzeczywistymi informacjami o sprzedaży, będziesz w stanie wykonać lepszy podział (choć nie wiem jak). –