Bonjour,
Pour mon site je réalise un moteur de recherche interne.
Jusqu'a la version 3 de celui ci tout allait bien, c'était un moteur de recherche pluto sympa mais sans plus.
Pour la nouvelle version je souhaite optimiser celui ci.
Pour cela je m'inspire donc de Google.
Tout d'abord j'ai réussit sans problème a afficher dans la description des résultats du texte contenant le mot clé recherché.
La description est coupé a différent endroit et récupère des morceaux de phrases contenant le mot clé recherché.
Voici le problème qui s'oppose maintenant :
J'aimerai que la méthode de tri soit plus élaboré.
A savoir que j'aimerai trié mes résultats par nombre d'occurence trouvé.
Exemple :
Deux résultats : "papa a une voiture" / "maman a une voite rouge et une voiture verte"
On notera que le timestamp du premier enregistrement sera plus petit que le 2e.
Si je suis ma méthode de tri :
SELECT * FROM table WHERE motcle LIKE '%voiture%' ORDER BY datetime DESC LIMIT 0 , 20
"papa a une voiture" sera renvoyé en premier.
Hors j'aimerai que les résultats qui comporte le plus d'occurence du mot clé soit affiché en premier.
Est ce possible avec une requète Sql ?
Il ne suffirai pas de trié par ordre croissant.
D'autre part je ne peux pas me permettre non plus de parcourir tout les résultats, de compter le nombre d'occurence trouvé pour chacun d'eux et de re-parcourir un tableau pour enfin afficher le résultat final car le nombre de résultat peut facilement atteindre les 1 000 et ceci sera trié par tranche de 20.
En cherchant un peu partout sur le site et sur le net, j'ai découvert GROUP BY mais je n'ai pas vraiment bien compris ce a quoi il servait, est ce que cela pourai m'être utile ici ?
En vous remerciant d'avance, je me tiens a disposition de toute questions permetant de comprendre un peu mieux mon problème.