probleme SELECT en MATCH avec du HTML... - PHP - Programmation
Marsh Posté le 20-08-2007 à 11:32:50
Fais une fonction qui inverse les codes HTML de tes accents
Marsh Posté le 20-08-2007 à 14:17:34
Ca ne règlerais pas le probleme. Le texte dans la base est enrichi. Il ne peut etre stocké qu'en HTML
La solution serait pourquoi pas une procédure stockée pour faire une sorte de htmlentity_decode... Et encore je suis en MySQL 4 donc c'est a oublier...
Marsh Posté le 20-08-2007 à 14:39:03
Citation : La fonction MATCH() effectue la recherche d'une chaîne de caractères dans une liste de textes (et dans un groupe d'une ou plusieurs colonnes utilisées pour l'index FULLTEXT). La chaîne recherchée est donnée en argument à AGAINST(). La recherche est sans distinguer les majuscules des minuscules. Pour chaque ligne de la table, MATCH() retourne une valeur de pertinence, qui est une mesure de la ressemblance entre le chaîne recherchée et le texte de la ligne dans le colonne donnée dans la liste de MATCH(). |
En clair, même s'il ne trouve que la moitié de ce que tu lui demandes, la valeur de "MATCH (texte) AGAINST ('fiscalité')" sera supérieure à 0 et le système te les retournera. En plus de ça, c'est une recherche qui travaille mot à mot, ça ne m'étonnerait pas que mysql considère que 'fiscalité' est formé du mot 'fiscalit' et du mot 'eacute' vu que le caractère '&' n'est pas une lettre ni un chiffre.
Comme le dit nycius, utilise donc une fonction (html_entity_decode par exemple) pour transformer tous les codes html en caractères normaux. Evidement, si t'as des balises html dans tes messages il faudra d'abord les transformer en quelque chose de plus neutre (du bbcode par exemple) Ca résoudra surement ton problème comme par magie.
PS : Comme indiqué dans le bout du manuel de mysql que j'ai cité, mysql tri par pertinence décroissante s'il n'y a aucun tri explicite d'indiqué dans la requette. Tu peux donc enlever le "order by" qui lui fait faire deux fois exactement le même boulot.
Marsh Posté le 22-08-2007 à 10:00:09
L'utilisation du BBCODE est a exclure car je ne peux pas changer l'editeur de contenu... Enfin si mais ca ferait énormément de taf en plus, et on perdrait nettement en lisibilité
Mon texte en base est obligatoirement en HTML
Donc je sais pas comment régler ce problème
Marsh Posté le 22-08-2007 à 10:06:28
fait ton match en boolean mode avec un + devant fiscalité
Marsh Posté le 22-08-2007 à 11:48:47
Tu peux me donner l'exemple de requete adapté a celui que j'ai donné ?
Marsh Posté le 22-08-2007 à 15:10:16
tu peux lire la doc ...
http://dev.mysql.com/doc/refman/5. [...] olean.html
Marsh Posté le 20-08-2007 à 10:48:04
Hello a tous ceux qui liront ce message
J'ai un petit souci dans l'une de mes requetes. Voici la requete en question :
Cette requete s'execute oui mais incorectement. Je m'explique :
Les données contenues dans le champ sur lequel je fais mes requetes sont en HTML saisies par un editeur de contenu. Les é deviennent é etc...
Le probleme c'est que cette requete me sort des données incohérente car elle matche uniquement l'expression é dans les autres enregistrements !
Autrement dit cette requete me ressort les enregistrements contenant des mots accentués. Ce qui n'est pas du tout pertinent.
Donc si certains d'entre vous ont déjà été exposés à ce genre de problème...