10
votes

Qu'est-ce que j'ai besoin dans une base de données pour "Les clients qui ont acheté cet article ont également acheté"?

Amazon a "les clients qui ont acheté cet article aussi acheté".

Je me demande et je veux ajouter ceci à mon panier que j'ai fait.

Quels champs ai-je besoin dans une base de données? Tout site Web, blog ou ressources pour cela?

Pouvez-vous suggérer le mécanisme comment je devrais le code s'il vous plaît?


0 commentaires

7 Réponses :


2
votes

Vous avez besoin d'une histoire de commandes afin que vous puissiez vérifier d'autres articles achetés avec l'utilisateur de l'article visualisent actuellement.


0 commentaires

6
votes

Vous n'avez probablement pas besoin de nouveaux champs dans votre base de données - gardez simplement une histoire de vos commandes. Ensuite, lorsque vous voulez trouver votre liste de ce que les autres personnes ont acheté:

  1. Sélectionnez tous les utilisateurs ayant une commande contenant l'article X
  2. Pour chacun de ces utilisateurs, totalez tout ce qu'ils ont acheté
  3. Obtenez le top 3/5 / quoi que ce soit et il y a votre liste.

3 commentaires

Des systèmes simples à base de comptage font généralement des moteurs de recommandation assez faibles. C'est vraiment un problème de statistiques / miniers de données.


@RicknZ Les comptes simples sont des estimateurs robustes. Compliqué ≢ meilleur. @NICKF @Alix Axel Vous pouvez incorporer des intersections et couper les 25% pertinents les moins pertinents et améliorer le nombre.


À l'étape 2, je ne compterais que les articles qui ont été commandés à la même heure que X ou leur donnent un poids plus élevé.




4
votes

Ce n'est pas trop délicat. Supposons que vous avez les tables suivantes:

  • clients strong>, principale clé clientIide li>
  • produits forts>, principale principale productID LI>
  • commandes forts>, ordonnance clé principale, clé étrangère CustomerID li>
  • ordecitems strong>, principal ordonnateur principal, commandes de clés étrangères, productide li> ul>

    Pour trouver les produits que vous recherchez, vous devez trouver l'ensemble de clients qui ont acheté cet ID de produit particulier: P>

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


0 commentaires

0
votes

Vous avez besoin "Programmation de l'intelligence collective" . Ils ont de bons chapitres sur les recommandations et tels. Vous voudrez lire sur les différences de Pearson et d'autres mesures.


0 commentaires

0
votes

Regardez sur Algorithmes de la bande intelligente , chapitre 3" Création de suggestions et de recommandations ". Pour votre question: éventuellement, vous pourriez avoir besoin d'une table avec des évaluations des utilisateurs pour différents articles. Sur la base de ces notations, vous serez en mesure de mesurer la similitude entre deux clients, puis effectuer une estimation basée sur ces valeurs sur les articles dont l'un des clients est sur le point de réaliser. Ces estimations sont utilisées pour classer les éléments.

Aussi, consultez le APIORI ALGORITHM Chapitre 4 ou une description générale de celui-ci ici ; Cela fonctionne pour les articles achetés ensemble et extraire des règles d'associations. Sur la base de ces règles, vous détecterez lequel des articles que vous vendez peut être ajouté au panier du client. Pour votre question: aucun champ supplémentaire ne doit être ajouté à votre base de données; Vous devez maintenir uniquement une table pour collecter des articles achetés ensemble (Contenu de paniers de marché).


0 commentaires

0
votes
select `A`.`ORDER_NO`, `A`.`SKU`, `B`.`SKU` `REL_SKU`
from `order_detail` `A`
inner join 
    (select DISTINCT `ORDER_NO`, `SKU` 
        from `order_detail`) `B`
    on `B`.`ORDER_NO` = `A`.`ORDER_NO`  
WHERE `B`.`SKU` = 'XXXXXXXX'
  AND `A`.`SKU` <> 'XXXXXXXX'
This works for me. of course add in any filters in the where clause as appropriate such as order status etc...

0 commentaires