chercher une expression dans un texte

  • Auteur de la discussion Auteur de la discussion Meeuuuhhh
  • Date de début Date de début
WRInaute passionné
Bonjour,

- Voilà j'ai 1000 articles.
- La catégorie de chaque article est comprise dans le texte, pas dans un champ séparé.
- J'ai environ 100 catégories.
- J'ai une page qui liste ces 100 catégories.
- Quand on clique sur une catégorie, la page suivante doit afficher tous les articles qui comprennent cette catégorie dans leur texte.
- Dans les textes, les catégories sont définies ainsi : {{nom-categorie

Donc,

J'affiche la page pour la catégorie intelligence-artificielle. Je récupère la variable $categorie=intelligence-artificielle.

Maintenant, je dois construire une requête SQL qui aille chercher dans la table article, les textes dans lesquels se trouve {{intelligence-artficielle.

Voilà, si ça se trouve c'est bateau et un simple LIKE pourrait suffir, mais j'ai essayé et ça ne donne rien, sans doute un problème de % à ajouter quelque part, à moins que ce ne soit plus complexe.


Au plaisir de lire vos réponses :)
 
WRInaute passionné
SELECT ..... WHERE TonChamp like '%$expression%'
(ou sans le premier % si la catégorie est toujours au tout début du champ)

MAIS tu gagnerais quand même beaucoup a faire un champ spécialement pour mémoriser la catégorie. C'est vraiment faire bosser le serveur pour pas grand chose se genre de requete.
 
WRInaute passionné
arnaudmn a dit:
SELECT ..... WHERE TonChamp like '%$expression%'
(ou sans le premier % si la catégorie est toujours au tout début du champ)

MAIS tu gagnerais quand même beaucoup a faire un champ spécialement pour mémoriser la catégorie. C'est vraiment faire bosser le serveur pour pas grand chose se genre de requete.
Ca fonctionne, merci.

Pour le serveur, je suis bien d'accord avec toi, mais j'ai vraiment pas le choix, ou alors il va falloir que j'épluche tous les articles pour remplir les champs, ça va être très très lourds.

**edit**

Et si je met un index sur le champ article, ça accèlère la recherche ?
 
WRInaute passionné
Meeuuuhhh a dit:
Pour le serveur, je suis bien d'accord avec toi, mais j'ai vraiment pas le choix, ou alors il va falloir que j'épluche tous les articles pour remplir les champs, ça va être très très lourds.

Sans rien changer dans l'existant, tu peux lancer la requete une fois par jour et pour chaque résultats, mettre à jour le nouveau champ contenant la catégorie.
Le serveur sql t'en remerciera :-)

Meeuuuhhh a dit:
Et si je met un index sur le champ article, ça accèlère la recherche ?

Non ; on met pas d'index sur des champs comme ça (même pas sur qu'on puisse d'ailleurs ; et si on peut, c'est nul)
 
WRInaute passionné
Je peux y réfléchir, mais il y a un truc qui complique :

Les articles peuvent être rangés dans divers catégories autrement dit, dans chaque article on peut une, deux, trois... catégorie de la forme {{categorie-1, {{categorie-2 etc...

ça nécessiterait une table à part en fait. Puis je vois pas trop le principe.

Il faut faire une boucle qui parcourt les articles et un script qui dit : "tu récupères la chaîne {{categorie et tu l'insères avec le titre et l'id de l'article dans la table categorie_des_articles.


C'est ça ?
 
Discussions similaires
Haut