cs_nebenobo
Messages postés16Date d'inscriptionmardi 9 juin 2009StatutMembreDernière intervention 3 décembre 2013
-
25 nov. 2013 à 23:10
cs_nebenobo
Messages postés16Date d'inscriptionmardi 9 juin 2009StatutMembreDernière intervention 3 décembre 2013
-
3 déc. 2013 à 20:58
Bonjour à tous,
voici mon problème :
je développe un site de recettes de cuisine ; pour faire simple, j'ai une table de recettes 'recettes' (id_recette,nom_recette etc), une table de mots-clef 'tags_recette' (id_tag,nom_tag) et une table de relations entre les recettes et mots-clef 'tags_recette_assoc' (tags_assoc_id,tag_id,tag_recette) où tag_id se réfère à id_tag et tag_recette à id_recette.
Lorsque j'affiche la page d'une recette, j'aimerais proposer uniquement 3 recettes similaires à la fin, tant qu'à faire celles qui ont le plus de tags en commun avec elle.
Comment dois-je m'y prendre ? Requête(s) mysql ou comparaisons de tableaux php ? Avec mon peu de pratique je comptais mettre les tag_id correspondant à la recette en question dans un tableau, puis dans une boucle sur toutes les autres recettes de la table mettre les tags correspondants dans un tableau et comparer les tableaux avec un truc du genre array_values(array_intersect)), mais j'imagine que ça mange de la ressource non ? Sachant qu'il y a déjà beaucoup de requêtes dans l'affichage de cette page...
cs_nebenobo
Messages postés16Date d'inscriptionmardi 9 juin 2009StatutMembreDernière intervention 3 décembre 2013 3 déc. 2013 à 20:58
Salut,
merci pour ta réponse. J'ai trouvé une réponse (voir ce forum : http://www.developpez.net/forums/d1396168/php/langage/debuter/requete-mysql-comparaisons-tableaux-php/#post7593404) mais ce qui est intéressant dans le lien que tu donnes c'est cet indice de Jaccard, qui donne une meilleure pertinence des résultats : dans ma requête je ne prends que les recettes qui ont le plus de tags communs avec la recette affichée, tandis que l'indice de Jaccard prend le nombre de tags en commun divisé par le nombre total de tags de la recette comparée, ce qui est beaucoup plus pertinent.
Je poste la réponse dès que j'ai trouvé la bonne requête !