मैं एक ईकॉमर्स साइट बना रहा हूं, और मुझे डेटाबेस से आधे रास्ते उचित समूहों में खींचने वाले उत्पादों को सॉर्ट करने के लिए एक अच्छा एल्गोरिदम विकसित करने में समस्या हो रही है। मैंने केवल उच्चतम मूल्य को 4 में विभाजित करने की कोशिश की है, और प्रत्येक समूह को उस आधार पर आधारित किया है। मैंने माध्य के आधार पर मानक विचलन भी करने की कोशिश की। दोनों कीमतों के साथ परिणाम हो सकते हैं कि कोई उत्पाद नहीं गिर जाएगा, जो एक उपयोगी फ़िल्टरिंग विकल्प नहीं है।मूल्य फ़िल्टर ग्रुपिंग एल्गोरिदम
मैंने उत्पादों के क्वार्टाइल लेने का भी प्रयास किया, लेकिन मेरी समस्या यह है कि कीमत $ 1 आइटम से $ 4,000 तक है। $ 4,000 लगभग कभी नहीं बेचते हैं, और बहुत कम महत्वपूर्ण हैं, लेकिन वे मेरे परिणामों को झुकाव रखते हैं।
कोई विचार? मैं आँकड़े कक्षा में अधिक ध्यान दिया जाना चाहिए था ...
अद्यतन:
मैं तरीकों एक सा संयोजन समाप्त हो गया। मैंने क्वार्टाइल/बाल्टी विधि का उपयोग किया, लेकिन कुछ श्रेणियों को हार्डकोडिंग करके इसे थोड़ा सा हैक किया जिसके भीतर अधिक संख्या में मूल्य समूह दिखाई देंगे।
//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;
}
}
ऐसा लगता है कि यदि आप वास्तविक बिक्री जानकारी के साथ उत्पाद जानकारी (जिसमें केवल कीमतें हैं) को समृद्ध करते हैं, तो आप बेहतर विभाजन करने में सक्षम होंगे (हालांकि मुझे अभी तक पता नहीं है) –