Sofresh Posté 12 Janvier 2007 Posté 12 Janvier 2007 Bonjour et bonne année à tous, En testant divers services de Réseaux Sociaux, ma curiosité s'est heurtée à leur système permettant de retracer les relations entre les utilisateurs. Prenons par exemple Pierre, qui visite le profil de Paul: Il voit alors indiqué le "chemin social" le menant à Paul: Pierre --> Jacques --> Paul. Si Jacques figure dans sa liste de contacts, et Paul figure dans les contacts de Jacques, l'algorithme utilisé n'est pas très compliqué. Mais si ce n'est pas le cas? Comment est réalisé ce cheminement? Car il peut alors être composé de bien plus de maillons, à l'infini: Pierre --> François --> Jacques --> Paul Où Pierre connait François, François connait Jacques, qui lui connait Paul. J'ai beau me creuser la tête, à part en générant paquets de boucles imbriquées, et donc de requêtes BDD, je ne trouve pas de méthode propre permettant de réaliser cela Quelqu'un serait-il plus inspiré que moi?
Portekoi Posté 12 Janvier 2007 Posté 12 Janvier 2007 Bonjour, Tu connais le point de départ (Pierre) mais pas forcément l'arrivée. Tu peux donc utiliser une fonction récursive pour développer les différents liens. Un peu comme un menu avec parent / enfants . Portekoi
Fuleran Posté 12 Janvier 2007 Posté 12 Janvier 2007 Bonjour, C'est la problématique du parcours de graphe : Il existe différente astuce pour optimiser tes requètes en construisant ta base sous la logique d'ensemble. Cela permet de diminuer les requètes en recherche (fréquente) mais allonge l'ajout d'enregistrement (sensé être plus rare). Je vais essayer de te trouver de la doc sur ce sujet dans mes archives. Sinon tu peux faire une recherche sur google sur ce thème. Benoit
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant