2010-01-03 3 views
6

अमेज़ॅन के पास "ग्राहक जिन्होंने इस आइटम को खरीदा है, उन्होंने भी खरीदा"।"इस आइटम को खरीदे गए ग्राहकों ने भी खरीदा" के लिए डेटाबेस में मुझे क्या चाहिए?

मैं सोच रहा हूं और इसे अपने शॉपिंग कार्ट में जोड़ना चाहता हूं जो मैंने बनाया था।

मुझे डेटाबेस में किस फ़ील्ड की आवश्यकता है? इसके लिए कोई वेबसाइट, ब्लॉग या संसाधन?

क्या आप यह सुझाव दे सकते हैं कि मुझे इसे कैसे कोड करना चाहिए?

उत्तर

1

आपको ऑर्डर के इतिहास की आवश्यकता है ताकि आप अन्य आइटम की जांच कर सकें जो आइटम उपयोगकर्ता के साथ खरीदे गए थे।

+0

अधिक जानकारी कृपया? – shin

6

आपको शायद अपने डेटाबेस में किसी भी नए फ़ील्ड की आवश्यकता नहीं है - बस अपने ऑर्डर का इतिहास रखें। फिर जब आप अन्य लोगों को क्या खरीदा की अपनी सूची को खोजने के लिए चाहते हैं: वे खरीदा है, बाकी सब कुल

  1. जो मद एक्स
  2. युक्त उन उपयोगकर्ताओं से प्रत्येक के लिए एक आदेश सभी उपयोगकर्ताओं का चयन करें
  3. प्राप्त करें शीर्ष 3/5/जो कुछ भी आपकी सूची है।
+1

सरल गिनती-प्रणाली आमतौर पर बहुत कमजोर अनुशंसा इंजन बनाती हैं। यह वास्तव में एक आंकड़े/डेटा खनन समस्या है। – RickNZ

+0

@RickNZ सरल गणना मजबूत अनुमानक हैं। जटिल ≢ बेहतर। @nickf @alix axel आप छेड़छाड़ को शामिल कर सकते हैं और कम से कम प्रासंगिक 25% ट्रिम कर सकते हैं और गिनती में सुधार कर सकते हैं। – isomorphismes

+1

चरण 2 में, मैं केवल उन वस्तुओं की गणना करता हूं जिन्हें एक्स के समान समय में आदेश दिया गया था या उन्हें उच्च वजन दिया गया था। –

3

यह बहुत मुश्किल नहीं है। मान लें कि आप निम्न तालिकाओं है:

  • ग्राहकों, प्राथमिक कुंजी CustomerID
  • उत्पाद, प्राथमिक कुंजी ProductID
  • आदेश, प्राथमिक कुंजी OrderID, विदेशी कुंजी CustomerID
  • OrderItems , प्राथमिक कुंजी ऑर्डरइटम, विदेशी कुंजी ऑर्डर आईडी, उत्पाद आईडी

उत्पादों आप की तलाश के लिए, आप जो उस विशेष उत्पाद आईडी खरीदा है ग्राहकों के सेट खोजने की जरूरत है:

:

SELECT CustomerID 
FROM (Customers INNER JOIN (Orders INNER JOIN OrderItems)) 
WHERE OrderItem.ProductID = <your product id here> 

उसके बाद, आप अन्य उत्पादों उन ग्राहकों को खरीद लिया है प्राप्त करने की आवश्यकता

SELECT ProductID 
FROM (Customers INNER JOIN (Orders INNER JOIN OrderItems)) 
WHERE (Customer = <given customer ID>) AND (ProductID <> <your product id>) 

फिर शीर्ष कुछ उत्पादों का चयन करें और आप दौड़ में हैं।

नोट: मैं एक संख्यात्मक लड़का हूं। डीबी गुरु 1 प्रश्न में ऐसा करने में सक्षम होंगे!:)

0

आपको "Programming Collective Intelligence" की आवश्यकता है। उनके पास सिफारिशों और इस तरह के कुछ अच्छे अध्याय हैं। आप पियरसन मतभेदों और अन्य उपायों के बारे में पढ़ना चाहेंगे।

0

Algorithms of the intelligent web, अध्याय 3 "सुझाव और सिफारिशें बनाना" पर एक नज़र डालें। आपके प्रश्न के लिए: वैकल्पिक रूप से, आपको अलग-अलग वस्तुओं के लिए उपयोगकर्ता रेटिंग वाले तालिका की आवश्यकता हो सकती है। इन रेटिंग के आधार पर, आप दो ग्राहकों के बीच समानता को मापने में सक्षम होंगे और फिर क्लाइंट में से किसी एक आइटम को प्राप्त करने वाले आइटमों पर इन मानों के आधार पर अनुमान लगाएंगे। इन अनुमानों का उपयोग वस्तुओं को रैंक करने के लिए किया जाता है।

इसके अलावा, Apriori algorithm अध्याय 4 या इसके सामान्य विवरण here पर एक नज़र डालें; यह एक साथ खरीदे गए सामानों और कुछ संघों के नियमों को निकालने के लिए काम करता है। इन नियमों के आधार पर, आप पता लगाएंगे कि आपके द्वारा बेची जाने वाली वस्तुओं को ग्राहक की टोकरी में जोड़ा जा सकता है। आपके प्रश्न के लिए: आपके डेटाबेस में कोई अतिरिक्त फ़ील्ड नहीं जोड़ा जाना चाहिए; आपको एक साथ खरीदे गए समूह आइटम (बाजार टोकरी सामग्री) में केवल एक टेबल बनाए रखना है।

संबंधित मुद्दे

 संबंधित मुद्दे