Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Creations de mots-clefs

2 réponses
Avatar
CrazyCat
Bonjour,

j'ai besoin d'un avis de connaisseurs pour savoir comment orienter mon
développement (assez simple en fait).

Je cherche à créer un site qui s'approche d'une encyclopédie, c'est à
dire qu'il y a des entrées de termes avec des descriptifs.
Si un descriptif contient un terme entré dans la base, je crée un lien
vers la page correspondante.

Mon problème est le suivant: comment réaliser proprement cela, sachant
que le terme est un mot avec la première lettre en majuscule (ça à son
importance).

Voies explorées:
- lors de l'enregistrement, avoir une requète du type "UPDATE table SET
description=(REPLACE(description, 'mot', '<a href=mot>mot</a>'))"
* Avantage: une seule requète fait la mise à jour globale des termes
déjà existants
* Problème: le REPLACE est case-sensitive, or "mot" peut être "Mot"
ou "mot" dans le descriptif et les nouveaux termes ne sont pas
correctement mis à jour.
- à intervalle régulier, lancer un script qui va regénérer les
descriptions en fonctions des entrées existantes
* Avantage: on peut gérer les termes ajoutés comme les termes supprimés
* Problème: perte du temps réel et le script peux devenir très lourd
- remplacement à l'affichage
* Avantage: on a du temps réel et c'est des manipulations de string
en php
* Problème: l'affichage est ralenti, les ressources utilisées par
PHP augmentent avec le nombre d'entrées

Voila, votre avis? d'autres voies à explorer?

--
Aide informatique: http://help-info.forumactif.com
Humour: http://www.chatfou.com
Tchattez en liberté: http://www.crazy-irc.net

2 réponses

Avatar
ftc

Je cherche à créer un site qui s'approche d'une encyclopédie, c'est à
dire qu'il y a des entrées de termes avec des descriptifs.
Si un descriptif contient un terme entré dans la base, je crée un lien
vers la page correspondante.


Tiens, c'est le principe du Wiki.


Mon problème est le suivant: comment réaliser proprement cela, sachant
que le terme est un mot avec la première lettre en majuscule (ça à son
importance).
[SNIP]

- remplacement à l'affichage
* Avantage: on a du temps réel et c'est des manipulations de string
en php
* Problème: l'affichage est ralenti, les ressources utilisées par PHP
augmentent avec le nombre d'entrées


C'est la solution que je choisirais :
- c'est la seule solution qui te permet de réutiliser tes données dans
un autre contexte car aucun suppléméent HTML n'y est présent
- le temps perdu en PHP est négligeable et puis tu peux mettre en place
une solution de cache

Avatar
Vincent Lascaux
C'est la solution que je choisirais :
- c'est la seule solution qui te permet de réutiliser tes données dans un
autre contexte car aucun suppléméent HTML n'y est présent
- le temps perdu en PHP est négligeable et puis tu peux mettre en place
une solution de cache


Tu ferais ca comment ? Charger la liste de tous les mots de la BDD et faire
un replace avec chacun d'eux, ou executer une requete SQL pour chaque mot de
la définition pour trouver l'URL qui correspond ? Dans les deux cas, le
temps perdu à générer la page ne me semble pas si négligeable que ca...

Moi je m'orienterais plutot vers la premiere solution. Si l'ajout ou la
suppression d'un mot est peu fréquent (disons beaucoup moins fréquent que la
consultation), ca va économiser un beau paquet de ressource. Par contre je
suis d'accord qu'il faut conserver en base les données brutes... Peut être
une solution intermédiaire. Que penses tu d'une table "Matches" qui recense
tous les mots définit (à remplacer) qu'on peut trouver dans une définition ?
Matches contiendrait ID_Definition et ID_Match, indexée sur ID_Definition.
Elle permet de générer dynamiquement la page rapidement (puisqu'on a acces
directement à la liste des mots à remplacer) et de conserver les données
brutes de façon clean... Il faut la mettre à jour à chaque fois qu'on ajoute
un mot, supprime un mot, ou change une définition (le gros du travail est
là, mais ca doit pas être fait très souvent).

Ce genre de probleme me rappelle combien il est futil d'arguer sur
l'utilisation d'echo ou print ou sur celui de " ou ' pour des raisons de
perfs tant le choix d'une ou de l'autre des solutions va impacter les perfs.
A mon avis ma solution permet une génération dynamique plusieurs milliers de
fois plus rapide que la précédente, et plusieurs milliers de fois plus lente
que la solution où on met entierement la table à jour (la premiere solution
de l'op).

--
Vincent