Page 1 sur 1
Compter le nombre d'occurences d'un mot dans une table
Posté : 11 mars 2011, 14:21
par Scots
Bonjour,
Je cherche à compter le nombre de fois qu'un mot apparait dans certains champs de ma table.
Admettons :
Table "table" ayant les champs "id", "titre", "texte", "date", etc.
Je voudrais savoir combien de fois le mot "mot" existe dans mes champs "titre" et "texte".
MATCH me renvoi une pertinence et COUNT le nombre d'enregistrements de ma table ou le mot apparait. Pas le nombre d'occurence.
SGBD : MySQL
Mes tables sont en MyISAM
Si quelqu'un peut m'aider sur ce coup ...
Merci d'avance.
Re: Compter le nombre d'occurences d'un mot dans une table
Posté : 11 mars 2011, 14:35
par xTG
Je penserais à deux requêtes séparés (un par champs) à première vue, et ensuite une addition des résultats.
A voir si on peut pas trouver mieux.
Re: Compter le nombre d'occurences d'un mot dans une table
Posté : 11 mars 2011, 14:38
par Scots
Ca êut être une piste en effet. Tout ceci sera en poc stock par la suite.
Par contre, je n'ai aucune idée de comment faire la requête

Re: Compter le nombre d'occurences d'un mot dans une table
Posté : 11 mars 2011, 14:44
par xTG
Il reste tout de même un soucis selon moi, la pertinence d'un tel calcul.
Car actuellement je vois bien qu'on peut savoir si un n-uplet contient ou non la valeur, on peut même aller jusqu'à différencier si elle est dans le titre ou le contenu mais...
C'est pour en faire quoi ensuite ? Car dans tout traitement on prend le n-uplet dans son ensemble et non des bouts sans référence. :/
Ne serais-ce pas juste savoir le nombre de résultats d'une recherche ?
Re: Compter le nombre d'occurences d'un mot dans une table
Posté : 11 mars 2011, 14:50
par Scots
J'ai besoin de cette données pour des calculs par la suite.
Je dois savoir combien de fois un mot apparait dans certains champs de ma table pour ensuite effectuer certains calculs de moyenne et de statistiques.
Re: Compter le nombre d'occurences d'un mot dans une table
Posté : 11 mars 2011, 15:30
par xTG
Donc c'est pertinent, je n'ai rien dit.
Le plus simple serait selon moi de rapatrier les n-uplets répondant au critère et de traiter le comptage en PHP.
A part si quelqu'un connait une fonction miracle en SQL qui permet de renvoyer 2 sur cette valeur : Un chien est un chien. (recherche du mot chien)
En PHP tu peux très bien le faire avec une expression régulière, preg_match_all par exemple te renverra un tableau, il n'y a plus qu'à compter le nombre d'occurences de ce tableau pour connaître le nombre de mots.
Quant à la requête, rien de plus simple, on peut faire ainsi :
SELECT titre, texte FROM table WHERE titre LIKE '%ma_recherche%' OR texte LIKE '%ma_recherche%'
Re: Compter le nombre d'occurences d'un mot dans une table
Posté : 11 mars 2011, 15:45
par Scots
Y a pas de mal
Je vais tester la requête.
Pour info, la base est en MySQL mais l'appli en c# et non php
Ce serait trop simple.
Edit : Bon, la requête fonctionne mais ne fait comme je le pensais "que" me ramener les enregitrements concernés ...
Re: Compter le nombre d'occurences d'un mot dans une table
Posté : 11 mars 2011, 16:39
par xTG
Ah bah évidement qu'elle ne renvoie que les enregistrements concernés.
Si tu veux tous les enregistrements et des stats dessus dans ce cas il faudrait faire le traitement directement en C# (les expressions régulières y sont aussi bien implémentées qu'en PHP

).
Bref un SELECT sans condition.
Re: Compter le nombre d'occurences d'un mot dans une table
Posté : 11 mars 2011, 16:42
par Scots
Yes, en fait je fait mon traitement et mes calculs en c#.
Bon, donc la solution n'est pas la bonne.
Je voulais faire une proc stock de cette fonction moi
Merci quand même pur ton aide.