Comment trier par pertinance en MYSQL ?

davidbdjt Messages postés 9 Statut Membre -  
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

  1. 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