Liens contextuels :
| Auteur | |
|---|---|
| lavercq | # 21 Apr 2008 - 23:02:45 |
| 8 Posts |
Je lis sur la page : J'ai un problème de pertinence sur les résultats donnés par la page : http://www.ubaye-verdon.net/barcinonien/formthm.html Ainsi, lorsque je tape par exemple "crête", j'obtiens des résultats correspondants aussi bien à "discrère" qu'à "secrète" ou "acreté", ou aussi "secrétement"... On m'a dit qu'il fallait faire une modification de la table. J'ai lu sur la page suivante de la doc.MySQL: //dev.mysql.com/doc/refman/5.0/fr/fulltext-search.html[/url]">http: //dev.mysql.com/doc/refman/5.0/fr/fulltext-search.html[/url]<i>Les index FULLTEXT sont utilisés avec les tables MyISAM et peuvent être créés depuis des colonnes de types CHAR, VARCHAR, ou TEXT au moment de CREATE TABLE ou plus tard avec ALTER TABLE ou CREATE INDEX. </i> Voici ma question : Comment faire un ALTER TABLE... Il faut rédiger une requête SQL, n'est-ce pas ? C'est cette requête que je ne sais rédiger.... Je suppose qu'il faut mettre : ALTER TABLE X (FULLTEXT(col1,col2,col3,etc...)); Est-ce exact ? Merci pour vos conseils à venir.[b][/url][#][/i] |
| Heyoan | # 21 Apr 2008 - 23:34:13 |
Un p'tit Kiwiz Coca ? 1664 Posts |
Salut lavercq et bienvenue ,le plus simple serait de passer par PhPMyAdmin et de créer une clef de type FULLTEXT sur ta table. Au final il s'agira effectivement d'une requête SQL ressemblant à ALTER TABLE matable ADD FULLTEXT ( A+ Un être en tant qu'être ne peut-il être autre qu'il n'est s'il n'exprime pas lui même son être ? |
| lavercq | # 22 Apr 2008 - 00:57:01 |
| 8 Posts |
Merci pour cette réponse rapide ! Je remarque qu'il faut mettre 'ADD' avant 'FULLTEXT'... et pas simplement: ALTER TABLE matable (FULLTEXT(col1,col2,col3,etc...)); mais, cela me confirme en outre,que l'on peut appliquer FULLTEXT à plusieurs colonnes en une seule requête Je pense qu'il n'y a aucun risque d'altération de ma table...n'est-ce pas ? Serait-il préférable d'en faire une sauvegarde préalable ? |
| Heyoan | # 22 Apr 2008 - 06:21:34 |
Un p'tit Kiwiz Coca ? 1664 Posts |
lavercq a écrit :Ah si ! Il y aura forcément altération de ta table avec un ALTER TABLE !!!Blague à part, c'est un index comme un autre et c'est dissocié des données et de la structure. Donc inutile de faire une sauvegarde (même si c'est une bonne idée d'en faire une de temps en temps !) .A+ Un être en tant qu'être ne peut-il être autre qu'il n'est s'il n'exprime pas lui même son être ? |
| lavercq | # 22 Apr 2008 - 22:24:43 |
| 8 Posts |
Je vais peut-être abuser ...? Mais, après avoir fait convenablement cette modification de ma table, il faut que je rédige ma requête PHP en conséquence... La page 12.6. Recherche en texte intégral (Full-text) dans MySQL indique : mysql> SELECT * FROM articles -> WHERE MATCH (title,body) AGAINST ('database'); http://dev.mysql.com/doc/refman/5.0/fr/fulltext-search.html Jusqu'ici j'utilisais LIKE %$searchtext% Est-il possible d'écrire ceci en PHP: SELECT * FROM articles |
| lavercq | # 22 Apr 2008 - 23:19:37 |
| 8 Posts |
Cela ne marche pas ...! en effet, je viens de lire dans la doc MySQL que : L'argument de AGAINST() doit être une chaîne constante. Or,j'utilise un formulaire qui envoie une variable : $searchtext... <input type="text" name="searchtext" /><input type="submit" name="submit" value="Chercher" /> je ne vois pas comment éviter de passer une variable...? Error retrieving mots from database!<br />Error: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND MATCH (col1,col2,col3,col4,col5,col6,col7)AGAINST ($searchtext) order by ... |
| Heyoan | # 22 Apr 2008 - 23:42:42 |
Un p'tit Kiwiz Coca ? 1664 Posts |
Re', un petit exemple dans ce post... ce qui donnerait quelque chose comme : $sql = "SELECT id, MATCH (titre,texte) AGAINST ('$searchtext') FROM tatable"; Modifié par Heyoan (22 Apr 2008 - 23:52) Un être en tant qu'être ne peut-il être autre qu'il n'est s'il n'exprime pas lui même son être ? |
| lavercq | # 23 Apr 2008 - 01:02:06 |
| 8 Posts |
Error retrieving mots from database! Error: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND MATCH (col1,....) AGAINST ('$searchtext') order by... Je lis sur la page :http://dev.mysql.com/doc/refman/5.0/fr/fulltext-restrictions.html[/url=] 12.6.3. Restrictions avec la recherche en texte intégral ceci qui me dérange : L'argument de AGAINST() doit être une chaîne constante. Dans ces conditions comment peut-on passer une variable comme $searchtext...? Je ne comprends pas pourquoi ça ne marche pas ! |
| Heyoan | # 23 Apr 2008 - 06:26:22 |
Un p'tit Kiwiz Coca ? 1664 Posts |
lavercq a écrit :Oui, cela ne veut pas dire qu'il faut toujours faire la recherche sur le même mot ! Je le comprends plutôt comme le fait qu'il ne faut pas utiliser la forme %searchtext%...Moi ce qui me dérange c'est de voir : ...AGAINST ('$searchtext') order by...alors que ce devrait être un From matable order by... .Le plus simple serait de montrer ton code. A+ Un être en tant qu'être ne peut-il être autre qu'il n'est s'il n'exprime pas lui même son être ? |
| lavercq | # 23 Apr 2008 - 15:07:52 |
| 8 Posts |
Voici le code (j'ai seulement remplacé les noms de colonnes par leur numéro)$select='SELECT DISTINCT ID,col1,col2,col3,col4,col5,col6,col7,col8,col9,col10,col11'; Et le retour après interrogation : <p>Error retrieving mots from database!<br />Error: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE 1=1 AND MATCH (tradfr,autresens,remarque,locfr,etymologie</p> |
| Heyoan | # 24 Apr 2008 - 06:48:57 |
Un p'tit Kiwiz Coca ? 1664 Posts |
Hem... il manque le code qui vient juste après !Et surtout la requête exacte qui est effectuée. Un être en tant qu'être ne peut-il être autre qu'il n'est s'il n'exprime pas lui même son être ? |
| lavercq | # 27 Apr 2008 - 12:19:24 |
| 8 Posts |
Merci Heyoan pour ton aide, grâce à tes questions j'ai pu approfondir ma recherche et trouver dans le code ce qui n'allait pas. Je peux si tu le souhaites t'envoyer le code après correction. Maintenant, ça marche comme je le souhaitais, c'est-à-dire que la recherche se fait bien sur le mot exact et non plus en retournant des mots qui contenaient le mot demandé. Merci infiniment. Ouf ! me voici soulagé, je vais pouvoir continuer à recopier mon dictionnaire. (tout en cherchant à améliorer la présentation...) Bonne continuation dans tes projets et Bonne journée. |
| Heyoan | # 27 Apr 2008 - 12:29:56 |
Un p'tit Kiwiz Coca ? 1664 Posts |
You're welcome !lavercq a écrit :Et bien tu pourrais effectivement le poster ici : cela pourrait dépanner quelqu'un qui s'interroge sur le FULLTEXT ...Un être en tant qu'être ne peut-il être autre qu'il n'est s'il n'exprime pas lui même son être ? |
| lavercq | # 28 Apr 2008 - 01:58:34 |
| 8 Posts |
Voici la ligne la plus importante pour la recherche fulltext: $select="select * from matable where MATCH (col0,col1,col2,col3,col4,col5,col6) AGAINST ('$searchtext')" ; Cependant, il faut noter qu'en "fulltext", les mots recherchés doivent avoir plus de trois lettres, ce qui n'est pas le cas pour la recherche avec like (LIKE '%$item%') Eventuellement, je me tiens à la disposition de qui souhaiterait un coup de main,ceci dans la mesure de mes petits moyens... |
Les références web : openweb.eu.org - opquast.com - webmaster-hub.com - webrankinfo.com - salemioche.net - web-pour-tous.org - webonorme.org
Nos partenaires : Editions Eyrolles - Location vacances France - Location vacances Europe
Nikozen : Hébergement - Réalisation : Alsacreations.fr

//dev.mysql.com/doc/refman/5.0/fr/fulltext-search.html[/url]



,
!!!
! Je le comprends plutôt comme le fait qu'il ne faut pas utiliser la forme %searchtext%...
.
...
