Comment trier par pertinance en MYSQL ?

davidbdjt Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
productif Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

je mexlique :
jai une table "contenu" contenu 1 champ "mot".
enregistrement 1 : f u h k
enregistrement 2 : b c f g
enregistrement 3 : b a c d e
enregistrement 4 : c k i

Je recherche par ordre de pertinance les mot "b a c"
Quel sera la requete SQL qui me renverra dans l'ORDRE
enregistrement 3 : b a c d e (3 element trouve)
enregistrement 2 : b c f g (2 element trouve)
enregistrement 4 : c k i ( 1 element trouve)
enregistrement 1 : f u h k (0 element trouve)

MERCI POUR VOTRE AIDE




1 réponse

productif Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   20
 
A moins que les mots à chercher "b a c" soient toujours les mêmes, le plus judicieux est certainement de créer une fonction stockée MySQL qui renvoie le nombre d'éléments trouvés en fonctions des deux ensembles de mots :

CREATE FUNCTION nb_elements(chaine_a_explorer VARCHAR(50), chaine_mots_recherches VARCHAR(50)) RETURNS INTEGER
BEGIN
...
END


Cette fonction doit renvoyer le nombre de mots trouvés dans chaine_a_explorer, où chaine_mots_recherches contient les mots recherchés.

La requête SQL qui renverra le résultat recherché sera du genre:

SELECT ...
FROM contenu...
WHERE ...
ORDER BY nb_elements(mot, 'a b c') DESC
0