PHP, top des recherches : Savez-vous ?

  • Auteur de la discussion Auteur de la discussion babou
  • Date de début Date de début
Bonjour à tous,

J'aimerais faire un top des recherches sur mon site.

Le problème, c'est que je ne sais pas comment m'y prendre.

Je peux ajouter une table "search_words" et y mettre tous les mots recherchés.

Mais comment procèder ensuite ?

Savez-vous s'il existe une requête qui extrait les mots les plus utilisés dans le champ de la table ?
 
moi je suis Old School alors je ferai ça à la main. Parce que sinon tu va vite te retrouver avec des trucs de cul ou des spams en tête des recherches... :S
 
babou a dit:
Je peux ajouter une table "search_words" et y mettre tous les mots recherchés.

Mais comment procèder ensuite ?

Savez-vous s'il existe une requête qui extrait les mots les plus utilisés dans le champ de la table ?

Connais tu SQL? Si oui ca ne devrait pas poser de problemes. Sinon documentes toi la dessus ca s'apprends tres vite et c'est tres interessant.
 
Code:
SELECT recherche, COUNT(recherche) AS nb FROM `search_words` GROUP BY recherche ORDER BY nb DESC

si tu connais si bien mysql, ça devrait pas te poser problème...
 
Une petite proposition du comment procéder, il y en a plein d'autres.

Tu peux ajouter une table search_words qui contiendra tes words et tes hits.
A chaque nouvelle recherche sur ton site, tu incrémentes la valeurs de hits du mot associé, s'il existe dans la table, sinon tu l'insère avec la valeur hits à 1.

Ensuite, supposons que tu veuilles connaître le top 10 de tes mots les plus recherchés, tu peux utiliser la requête suivante :

Code:
SELECT *
FROM `search_words`
ORDER BY `hits` DESC
LIMIT 0 , 10

Edit : Oups, j'ai été précédé ;)
Edit 2: Requette corigée, cf ci dessous.
 
ce n'est pas la même technique.

moi ça n'impose que de faire un INSERT à chaque recherche.

Mais par contre tu te retrouves vite avec une table avec 50000 entrées.

par contre pour ta requête ce serait pas plutôt :

Code:
SELECT *
FROM `search_words`
ORDER BY `hits` DESC
LIMIT 0 , 10

;)
 
Oui tu as raison pour la requête ... quoi qu'avoir les stats des dix mots les moins recherchés ça pourrait être marant aussi 8)
Merci pour la correction !
 
yeca a dit:
ce n'est pas la même technique.

moi ça n'impose que de faire un INSERT à chaque recherche.

Mais par contre tu te retrouves vite avec une table avec 50000 entrées.

Oui c'est pour ça que l'autre solution est plus adaptée.
 
Ce que demande Babou, c'est peut-être, comment récupérer les mot-clés depuis le referrer???
Dans ce cas, il faudrait traiter cas par cas les différents sites que tu qualifierais de "moteur", et récupérer la chaine qui se trouve après le query? / q? / requete? <- là c'est aussi à faire au cas par cas, selon le moteur...

sinon, tu as des logiciels de stats qui le font.
 
Nikos38 a dit:
yeca a dit:
ce n'est pas la même technique.

moi ça n'impose que de faire un INSERT à chaque recherche.

Mais par contre tu te retrouves vite avec une table avec 50000 entrées.

Oui c'est pour ça que l'autre solution est plus adaptée.

bah non, parce que ça te force aussi à récupérer la valeur de chaque mot clé à chaque fois.

et avec cette méthode, tu ne peux pas insérer aussi l'IP pour vérification d'un flood, ou la date et l'heure si jamais tu veux suivre dans le temps ;)
 
Il parrait qu'on peut trier par nombre d'apparition d'occurences avec Excel mais j'ai pas compris comment il fallait faire
si quelqu'un sait...
ça peut être utile plutôt que de soliciter la BdD
 
Merci beaucoup pour vos réponses, c'est exactement cela que je voulais faire.

Code:
SELECT recherche, COUNT(recherche) AS nb FROM `search_words` GROUP BY recherche ORDER BY nb DESC

Si j'ai bien compris :

- Tu selectionnes toutes les lignes du champ "recherche", tu les comptes (ça devient "nb").
- Ensuite tu fais un GROUP BY sur le champ "recherche". Quel effet ça a ?
- Puis tu tris par "nb", ça je comprends.
 
Tu fais group by pour compter combien de fois un meme mot revient.
En fait tu devrais plutot ajouter une colonne que tu incrementes à chaque fois qu'un mot est demandé
 
yeca a dit:
Nikos38 a dit:
yeca a dit:
ce n'est pas la même technique.

moi ça n'impose que de faire un INSERT à chaque recherche.

Mais par contre tu te retrouves vite avec une table avec 50000 entrées.

Oui c'est pour ça que l'autre solution est plus adaptée.

bah non, parce que ça te force aussi à récupérer la valeur de chaque mot clé à chaque fois.

et avec cette méthode, tu ne peux pas insérer aussi l'IP pour vérification d'un flood, ou la date et l'heure si jamais tu veux suivre dans le temps ;)

C'est vrai.
Avec le méthode de "hits" je ne peux plus faire ça :( (ou alors avec une autre table...)
 
TOMHTML a dit:
moi je suis Old School alors je ferai ça à la main. Parce que sinon tu va vite te retrouver avec des trucs de cul ou des spams en tête des recherches... :S

C'est clair !

Cependant il te suffit de bannir ce genre de mot-clé avant l'insertion dans la BDD.
 
oui mais bon c'est complexe et long (gros fichier en plus)...
(moi en fait j'utilise un fichier TXT dans lequel j'enregistre les requetes tapées.)
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut