BOnjour,
Je suis actuellement en train de faire un script de recherche pour un système de FAQ. Et j'aurais besoin d'aide quant à la classification des résultats.
Ma table FAQ est constituée de cette façon : id / question / reponse / motscles
Exemple d'enregistrement dans ma bdd : (ce n'est qu'un exemple)
-----
id : 1
question : Comment lire mes mails ?
reponse : En utilisant un client mail par exemple etc..
motscles : lire mail mails consultation email emails
-----
id : 2
question : Comment supprimer mes mails ?
reponse : Il vous suffit de selectionner le mail à supprimer avec la case à cocher
motscles : supprimer mail mails éliminer eliminer
-----
id : 3
question : pourquoi je n'arrive pas à accéder à internet
reponse : Vérifiez que votre cable réseau est branché
motscles : accès internet
Admettons maintenant que l'utilisateur dans le champ de recherche saisisse la chaine suivante :
Comment supprimer mes mails
Si j'effectue une requêtte de ce type là :
il me trouvera donc les deux premières réponses à savoir :
Comment lire mes mails ? ET Comment supprimer mes mails ?
Si on vérifie ce que la personne a saisie comme mots cles et les mots cles entrés pour chaque question on remarque ceci :
Comment lire mes mails ? : Mot en commun "mail"
Comment supprimer mes mails ? : Mots en commun "mail" et "supprimer"
Alors j'ai trouvé le moyen de trouver l'intersection de deux tableaux et j'ai trouvé le moyen de compter l'intersection qu'il y a entre deux tableaux avec ces fonctions :
Mais une fois que j'ai cette valeur (Qui sera de "1" pour la question Comment lire mes mails et qui sera de "2" pour la question Comment supprimer mes mails)
comment puis-je faire pour trier les réponses dans l'ordre décroissant ? Du "PLUS de mots en commun" au "MOINS de mots en commun" sachant que la requette est normalement déjà effectuée (et donc les résultats déjà triés)
Merci de l'aide que vous pourriez m'apporter
PS:
COmment trier les résultats lorsque je suis à ce niveau là de l'affichage de mes réponses :
Modifié par fieldset (18 Sep 2007 - 09:53)
Je suis actuellement en train de faire un script de recherche pour un système de FAQ. Et j'aurais besoin d'aide quant à la classification des résultats.
Ma table FAQ est constituée de cette façon : id / question / reponse / motscles
Exemple d'enregistrement dans ma bdd : (ce n'est qu'un exemple)
-----
id : 1
question : Comment lire mes mails ?
reponse : En utilisant un client mail par exemple etc..
motscles : lire mail mails consultation email emails
-----
id : 2
question : Comment supprimer mes mails ?
reponse : Il vous suffit de selectionner le mail à supprimer avec la case à cocher
motscles : supprimer mail mails éliminer eliminer
-----
id : 3
question : pourquoi je n'arrive pas à accéder à internet
reponse : Vérifiez que votre cable réseau est branché
motscles : accès internet
Admettons maintenant que l'utilisateur dans le champ de recherche saisisse la chaine suivante :
Comment supprimer mes mails
Si j'effectue une requêtte de ce type là :
mysql_query("SELECT * FROM `faq` WHERE motscles LIKE '%Comment%' OR motscles LIKE '%supprimer%' OR motscles LIKE '%mes%' OR motscles LIKE '%mails%'")
il me trouvera donc les deux premières réponses à savoir :
Comment lire mes mails ? ET Comment supprimer mes mails ?
Si on vérifie ce que la personne a saisie comme mots cles et les mots cles entrés pour chaque question on remarque ceci :
Comment lire mes mails ? : Mot en commun "mail"
Comment supprimer mes mails ? : Mots en commun "mail" et "supprimer"
Alors j'ai trouvé le moyen de trouver l'intersection de deux tableaux et j'ai trouvé le moyen de compter l'intersection qu'il y a entre deux tableaux avec ces fonctions :
<?php
count(array_intersect($motsclesdelaquestion, motssaisisparlutilisateur));
?>
Mais une fois que j'ai cette valeur (Qui sera de "1" pour la question Comment lire mes mails et qui sera de "2" pour la question Comment supprimer mes mails)
comment puis-je faire pour trier les réponses dans l'ordre décroissant ? Du "PLUS de mots en commun" au "MOINS de mots en commun" sachant que la requette est normalement déjà effectuée (et donc les résultats déjà triés)
Merci de l'aide que vous pourriez m'apporter
PS:
COmment trier les résultats lorsque je suis à ce niveau là de l'affichage de mes réponses :
<?php
while($resultats = mysql_fetch_array($selection_recherche))
{
echo '
<strong>Numero:</strong>'.$resultats['id'].'<br />
<strong>Question:</strong>'.$resultats['question'].'<br />
<strong>Reponse:</strong>'.$resultats['reponse'].'<br />
<strong>Mots Cles de la question:</strong>'.$resultats['motscles'].'<br />
<strong>Nbr de Mots Cles en commun:</strong>'.count(array_intersect($mots, explode(" ", $resultats['motscles']))).'<br /><br />';
}
?>
Modifié par fieldset (18 Sep 2007 - 09:53)