Bonjour chers developpeurs,
J'ai crée une formulaire de recherche d'un sujet (sur la table
sujet) avec un champ texte
critere.
Ce que je fais maintenant est de prendre chaque mot séparément grâce à la fonction
explode(' ',$critere); qui me retourne les mots qui constitue la chaine;
et puis je classe les résultats de la recherche (résultat de la requete sur les sujets qui contiennent au moins l'un de ces mots clefs) selon le nombre des différents mots clefs y cité.
un exemple plus parlant :
supposant que la chaine composée par l'utilisateur est :
$critere = "policier attaque malfaiteur"
je decortique cette chaine en $criteres=array{"policier","attaque","malfaiteur"}.
j'execute une requette pour chaque mot séprément, et je recense le nombre des differents mots clefs trouvé dans la base des sujets.
sujet1 : "le policier Xman a attaque un malfaiteur... "
sujet2: "le chef policier doit être l'exemple en discipline .je sais pas koi.. malfaiteur..."
sujet3:"un malfaiteur a attaque un policier de la route .."
le sujet1 reçoie 3pt, le sujet2 1pt, et le sujet3 3pt.
comme vous voyer le recensement simple du nombre de differents mots clefs apparu n'est pas optimal : le sujet3 dois être le dernier classé.
pour mieux faire, je dois faire plusieurs boucles qui cherchent d'abord les mots dans le bon sens :-(
Si vous avez déja créer un algorithme plus optimal, ou vous connaissiez une foncion en Mysql qui sait trouver la chaine la plus 'proche' d'une sous chaine; votre aide sera si précieux pour moi.
Merci d'abord pr avoir lu tous ça!
Sympa developpeur ;-)
[ Lien ]