IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Mot les plus utilisés


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 30
    Points : 22
    Points
    22
    Par défaut [Tableaux] Mot les plus utilisés
    Bonjour,

    je me retrouve confronté à une demande singulière.
    Dans une base contenant plus de 45 000 entrées d'actualités, je dois pouvoir faire un top 10 des mots les écrits
    j'ai de suite penser à un regex mais après je ne vois pas trop quel chemin suivre pour aboutir à ce top 10 des mots les plus écrits dans les actualités en évitant les mots tel que 'le, la, les, et, etc...'
    Vous auriez des pistes ?

    Merci
    Kenji

  2. #2
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    salut,
    une proposition qui n'a pas la prétention d'être LA solution:
    * créér un tableau dont les clés seront les mots et les valeurs le nombre d'occurence.
    * tu passes tes enregistrements un par un et tu isoles chaque mot.
    * si le tableau ne contient pas la clé (le mot courant) tu la crées avec la valeur un
    * sinon tu incrémentes de un

    pour éviter les le, la, des..., je vois trois possibilités:
    * soit tu détermines un longueur de mot minimum (par exemple 4)
    * soit, plus exhaustif, tu te crées un tableau contenant tous les mots à exclure
    * soit un mix des deux solutions: éliminer tous les mots de 2 caractères, plus d'autres plus longs mais non pertinent.

    voilà premières idées à enrichir...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    Salut,

    en effet c'est une solution mais le risque en passant par un tableau est qu'il va être assez important , la table fait 130 mo de texte.
    un tableau pourrais t il supporter autant d'enregistrement avec un temps d'exécution rapide ?

    merci

  4. #4
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    Peut être qu'il faut procéder en plusieurs requêtes pour ne pas tout charger d'un coup... 20 enregistrements par 20 ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    je vais suivre cette piste de tableau
    en mettant un javascript avec timeout sur 5 sec en bas de page pour relancer le script automatiquement ensuite.
    surtout que ce ne sera utile que pour une seule fois a des fins statistiques donc je vais chercher au plus rapide

    merci pour les pistes

    Kenji

  6. #6
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    je ne suis pas sûr que tu aies besoin de javascript (ou j'ai mal compris ce que tu veux faire). Tu peux faire une boucle qui s'incrémente de 20 à chaque tour. Et dans cette boucle du fait ta requête et ton traitement. Qu'en penses-tu?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    en faisant une boucle qui s'incremente , le script ne s'arrête pas et sur le serveur il y a le limit a 30 secondes.

    du coup pour éviter de surcharger le serveur en modifiant le set time dans un htaccess, je pensais faire la boucle sur x entrées, ensuite une fois finis je met un javascript avec un time out de 1 sec par exemple et cela rappelle la page jusqu'à épuisement.

    bon ok je reconnais que c'est une méthode très barbare

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 69
    Points : 80
    Points
    80
    Par défaut
    ou tu te fait une table avec seulement un champ : mot

    tu y met tous les mots de tous tes articles, sans te soucier des doublons et en supprimant les mots trop courants.

    après, tu utilise une requete du genre : (de tête, donc à vérifier)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT mot, COUNT(mot) AS valeur FROM mots GROUP BY valeur ORDER BY valeur DESC LIMIT 10;

  9. #9
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    ok, je comprends, c'est vrai qu'il y a la contrainte de temps.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par parksto Voir le message
    ou tu te fait une table avec seulement un champ : mot

    tu y met tous les mots de tous tes articles, sans te soucier des doublons et en supprimant les mots trop courants.

    après, tu utilise une requete du genre : (de tête, donc à vérifier)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT mot, COUNT(mot) AS valeur FROM mots GROUP BY valeur ORDER BY valeur DESC LIMIT 10;
    intéressant.
    je sors les texte, fait un explode sur l'espace blanc, et faire une requête d'insert à la suite sur le mot

    je vais étudier cette solution qui semble plus rapide pour extraire le résultat ensuite

    merci

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 69
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par kenji33 Voir le message
    intéressant.
    je sors les texte, fait un explode sur l'espace blanc, et faire une requête d'insert à la suite sur le mot ...
    deux petites précisions,

    - n'oublie pas de supprimer la ponctuation

    - n'oublie pas que tu peux inserer plusieurs valeurs en une seule requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO mots (mot) VALUES ('plusieurs'), ('mots'), ('en'), ('une'), ('seule'), ('requete')

Discussions similaires

  1. [MySQL] Explorer table sql et récupérer mot les plus fréquent.
    Par rupileos dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/04/2010, 13h38
  2. Réponses: 16
    Dernier message: 24/12/2009, 19h44
  3. analyse de trafic (determiner les AS les plus utilisés)
    Par aicou dans le forum Développement
    Réponses: 0
    Dernier message: 28/09/2009, 12h46
  4. speed dial, pas de site les plus utilisés
    Par lepierot dans le forum Firefox
    Réponses: 0
    Dernier message: 04/11/2008, 15h48
  5. Recherche d'enregistrements les plus utilisés
    Par olivier94 dans le forum Access
    Réponses: 2
    Dernier message: 21/03/2007, 19h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo