[HS] syntaxe SQL et/ou php
Bonjour, Dans le cadre d'une recherche d'informations dans une base de données, par mots clé, je n'arrive pas à concrétiser ce type de recherche : Le mieux est de donner un exemple. mot clé (motcle) = biographie richard stallman $query_string = SELECT * FROM table WHERE infos LIKE '%$motcle%' ; Or, le nom stallman existe bien dans la base mais biographie richard stallman n'est pas contenu dans stallman. Comment faire alors le contraire, c'est à dire faire la recherche selon stallman' contenu dans biographie richard stallman ? Quel serait la syntaxe SQL ou php en ce sens ... ? Merci. Henri -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists Pour vous DESABONNER, envoyez un message avec comme objet unsubscribe vers debian-user-french-requ...@lists.debian.org En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org Archive: http://lists.debian.org/20041120.26387.h.wis...@free.fr
Re: [HS] syntaxe SQL et/ou php
Bonjour, Bonsoir, Le Fri, 4 Nov 2011 11:20:26 +0100, h.wis...@free.fr, vous avez écrit : mot clé (motcle) = biographie richard stallman $query_string = SELECT * FROM table WHERE infos LIKE '%$motcle%' ; - transformer $motcle en tableau - like '%$motcle[1] or like '%$motcle[1] ainsi de suite jusqu'au dernier mot -- Cordialement Grégory BULOT -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists Pour vous DESABONNER, envoyez un message avec comme objet unsubscribe vers debian-user-french-requ...@lists.debian.org En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org Archive: http://lists.debian.org/2004113028.42524...@bulot-fr.com
Re: [HS] syntaxe SQL et/ou php
Le vendredi 04 novembre 2011, Grégory Bulot a écrit : Le Fri, 4 Nov 2011 11:20:26 +0100, h.wis...@free.fr, vous avez écrit : mot clé (motcle) = biographie richard stallman $query_string = SELECT * FROM table WHERE infos LIKE '%$motcle%' ; - like '%$motcle[1] or like '%$motcle[1] ainsi de suite jusqu'au dernier mot Grégory BULOT -- Ne serait-ce pas : like '%$motcle[1] or like '%$motcle[2] - transformer $motcle en tableau : Tableau = array ? ainsi de suite jusqu'au dernier mot : Comment compter les mots du mot clé ? -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists Pour vous DESABONNER, envoyez un message avec comme objet unsubscribe vers debian-user-french-requ...@lists.debian.org En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org Archive: http://lists.debian.org/20041151.27892.h.wis...@free.fr
Re: [HS] syntaxe SQL et/ou php
Bonjour, Bonsoir, Le Fri, 4 Nov 2011 11:51:27 +0100, h.wis...@free.fr, vous avez écrit : Ne serait-ce pas : like '%$motcle[1] or like '%$motcle[2] Si toutafait :-D Comment compter les mots du mot clé ? Autant de solutions que de Dev php présent sur cette liste, je ferais un foreach http://docs.php.net/manual/fr/control-structures.foreach.php -- Cordialement Grégory BULOT -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists Pour vous DESABONNER, envoyez un message avec comme objet unsubscribe vers debian-user-french-requ...@lists.debian.org En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org Archive: http://lists.debian.org/2004123845.18a73...@bulot-fr.com
Re: [HS] syntaxe SQL et/ou php
Bonjour, Le vendredi 04 novembre 2011, h.wis...@free.fr a écrit... Dans le cadre d'une recherche d'informations dans une base de données, par mots clé, je n'arrive pas à concrétiser ce type de recherche : Le mieux est de donner un exemple. mot clé (motcle) = biographie richard stallman $query_string = SELECT * FROM table WHERE infos LIKE '%$motcle%' ; Or, le nom stallman existe bien dans la base mais biographie richard stallman n'est pas contenu dans stallman. Comment faire alors le contraire, c'est à dire faire la recherche selon stallman' contenu dans biographie richard stallman ? Quel serveur de bases de données ? Tu pourrais regarder si les possibilités de la recherche fulltext te conviennent ? Sinon, sous mysql voir si tu peux utiliser les fonctions de regexp ? select 'Biographie richard Stallman' regexp '.*Stallman'; Ou bien find_in_set ? select find_in_set('stallman', 'biographie,richard,stallman'); -- jm -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists Pour vous DESABONNER, envoyez un message avec comme objet unsubscribe vers debian-user-french-requ...@lists.debian.org En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org Archive: http://lists.debian.org/2004114501.GC24562@espinasse
Re: [HS] syntaxe SQL et/ou php
Le vendredi 04 novembre 2011, Jean-Michel OLTRA a écrit : Le vendredi 04 novembre 2011, h.wis...@free.fr a écrit... Dans le cadre d'une recherche d'informations dans une base de données, par mots clé, je n'arrive pas à concrétiser ce type de recherche : mot clé (motcle) = biographie richard stallman $query_string = SELECT * FROM table WHERE infos LIKE '%$motcle%' ; Or, le nom stallman existe bien dans la base mais biographie richard stallman n'est pas contenu dans stallman. Comment faire alors le contraire, c'est à dire faire la recherche selon stallman' contenu dans biographie richard stallman ? -- Quel serveur de bases de données ? : MySQL Tu pourrais regarder si les possibilités de la recherche fulltext te conviennent ? J'ai vu intéressant mais : Erreur de la requete SELECT * FROM table WHERE MATCH (liens , comments) AGAINST ('biographie richard stallman') . Sinon, sous mysql voir si tu peux utiliser les fonctions de regexp ? select 'Biographie richard Stallman' regexp '.*Stallman'; : Oui, mais il faut détacher chaque mot automatiquement car $var=variable à contenu aléatoire Ou bien find_in_set ? select find_in_set('stallman', 'biographie,richard,stallman'); jm La solution serait sans doute : - ($var=variable à contenu aléatoire) ici : $var=biographie richard stallman; - $var = explode(' ', $var); - détacher chaque mot par leur variable : $mot1 , $mot2, $mot3 ... - select find_in_set('$mot1' , '$mot2' , '$mot3') et cerise sur le gâteau, supprimer les mots inopportuns : de, le, la, du, ... etc ... Merci Henri -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists Pour vous DESABONNER, envoyez un message avec comme objet unsubscribe vers debian-user-french-requ...@lists.debian.org En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org Archive: http://lists.debian.org/20041359.31157.h.wis...@free.fr
Re: [HS] syntaxe SQL et/ou php
Bonjour Or, le nom stallman existe bien dans la base mais biographie richard stallman n'est pas contenu dans stallman. Comment faire alors le contraire, c'est à dire faire la recherche selon stallman' contenu dans biographie richard stallman ? J'avoue ne pas saisir le sens de ton expression de besoin. Cherches-tu à ne récupérer que les enregistrements qui contiennent ET biographie ET richard ET stallman ? Quel serait la syntaxe SQL ou php en ce sens ... ? amha, SQL D'autres critères rentrent en compte, comme la base de données. Par exemple, mysql (d'autres aussi) a des méthodes de recherche et d'extraction enrichies, sur des champs plus spécifique comme fullText. p.s. Dans le cas de recherche de caractères, = fera la distinction minuscules/majuscules, et LIKE les confondra, ce qui peut être utile -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists Pour vous DESABONNER, envoyez un message avec comme objet unsubscribe vers debian-user-french-requ...@lists.debian.org En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org Archive: http://lists.debian.org/64009.192.44.63.162.1320411793.squir...@rtr.homelinux.org
Re: [HS] syntaxe SQL et/ou php
Bonjour, Le vendredi 04 novembre 2011, h.wis...@free.fr a écrit... Tu pourrais regarder si les possibilités de la recherche fulltext te conviennent ? J'ai vu intéressant mais : Erreur de la requete SELECT * FROM table WHERE MATCH (liens , comments) AGAINST ('biographie richard stallman') . As tu rajouté l'index fulltext ? alter table `table` add fulltext(liens,comments); Voir également les possibilités de 'query expansion' pour la recherche fulltext, éventuellement : against ('motif' with query expansion) -- jm -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists Pour vous DESABONNER, envoyez un message avec comme objet unsubscribe vers debian-user-french-requ...@lists.debian.org En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org Archive: http://lists.debian.org/2004131011.GE24562@espinasse
Re: [HS] syntaxe SQL et/ou php
On Fri, 4 Nov 2011 11:20:26 +0100 h.wis...@free.fr wrote: mot clé (motcle) = biographie richard stallman $query_string = SELECT * FROM table WHERE infos LIKE '%$motcle%' ; Or, le nom stallman existe bien dans la base mais biographie richard stallman n'est pas contenu dans stallman. Comment faire alors le contraire, c'est à dire faire la recherche selon stallman' contenu dans biographie richard stallman ? Code symbolique: SELECT * FROM table WHERE infos LIKE '%motcle1%' INTERSECT SELECT * FROM table WHERE infos LIKE '%motcle2%' INTERSECT SELECT * FROM table WHERE infos LIKE '%motcle3%'; Avec logiquement: motcle1='stallman', motcle2='biographie', motcle3='richard'. (d'ailleurs est-ce que 'richard' est vraiment un critère puisque 'stallman' est un nom peu répandu, et l'association 'stallman' 'biographie' encore moins...?) Cependant, et quelque soit le moteur de DB, une recherche de type 'LIKE' est loin d'être neutre en terme de perfs (puisqu'il va falloir systématiquement que tout soit d'abord converti en minuscules avant la recherche proprement dite). Une indexation fulltext peut être une solution, mais il faudra penser à nourrir correctement le dictionnaire; la solution la plus rapide (si tant est que ce type de recherche doive se répéter souvent) consisterait à ajouter des tags sur lesquels on effectue les recherches. YMMV puisque ça dépend directement du type de texte dans lequel les recherches sont effectuées - si ce sont des milliers d'articles, plutôt fulltext, si c'est bcp moins que cela, plutôt tags. Quel serait la syntaxe SQL ou php en ce sens ... ? SQL -- He who sneezes without a handkerchief takes matters into his own hands. -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists Pour vous DESABONNER, envoyez un message avec comme objet unsubscribe vers debian-user-french-requ...@lists.debian.org En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org Archive: http://lists.debian.org/2004145852.7b903eac@anubis.defcon1
Re: [HS] syntaxe SQL et/ou php
Le vendredi 04 novembre 2011, Jean-Michel OLTRA a écrit : Le vendredi 04 novembre 2011, h.wis...@free.fr a écrit... Tu pourrais regarder si les possibilités de la recherche fulltext te conviennent ? J'ai vu intéressant mais : Erreur de la requete SELECT * FROM table WHERE MATCH (liens , comments) AGAINST ('biographie richard stallman') . As tu rajouté l'index fulltext ? alter table `table` add fulltext(liens,comments); Voir également les possibilités de 'query expansion' pour la recherche fulltext, éventuellement : against ('motif' with query expansion) jm --- Merci Jean-Michel, et à tous ceux qui m'ont répondu. Avec les champs fulltext dans la table MySQL, la requête SQL : SELECT * FROM table WHERE MATCH (liens , comments) AGAINST ('biographie de richard stallman') renvoient un résultat sur tous les mots, et le mot de ne semble pas pas pris en compte (ce que je veux). Henri -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists Pour vous DESABONNER, envoyez un message avec comme objet unsubscribe vers debian-user-french-requ...@lists.debian.org En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org Archive: http://lists.debian.org/20041628.36724.h.wis...@free.fr
Re: [HS] syntaxe SQL et/ou php
Le 15282ième jour après Epoch, Grégory Bulot écrivait: Bonjour, Bonsoir, Le Fri, 4 Nov 2011 11:51:27 +0100, h.wis...@free.fr, vous avez écrit : Ne serait-ce pas : like '%$motcle[1] or like '%$motcle[2] Si toutafait :-D Comment compter les mots du mot clé ? Autant de solutions que de Dev php présent sur cette liste, je ferais un foreach http://docs.php.net/manual/fr/control-structures.foreach.php Idéalement, explode¹ est ton ami [1] http://php.net/manual/fr/function.explode.php -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists Pour vous DESABONNER, envoyez un message avec comme objet unsubscribe vers debian-user-french-requ...@lists.debian.org En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org Archive: http://lists.debian.org/8739e37rtl@fermat.tourde.home
Re: [HS] syntaxe SQL et/ou php
Bonjour, Le vendredi 04 novembre 2011, h.wis...@free.fr a écrit... Avec les champs fulltext dans la table MySQL, la requête SQL : SELECT * FROM table WHERE MATCH (liens , comments) AGAINST ('biographie de richard stallman') renvoient un résultat sur tous les mots, et le mot de ne semble pas pas pris en compte (ce que je veux). Vois ça : http://dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html Tu dois pouvoir lui faire avaler le « de ». -- jm -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists Pour vous DESABONNER, envoyez un message avec comme objet unsubscribe vers debian-user-french-requ...@lists.debian.org En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org Archive: http://lists.debian.org/2004173249.GG24562@espinasse