Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1418 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

MySQL => UPDATE à la place de INSERT ? possible ?

n°1287992
Arjuna
Aircraft Ident.: F-MBSD
Posté le 19-01-2006 à 23:39:09  profilanswer
 

Reprise du message précédent :
Non, ce système sera pire.
 
Si j'ai bien compris, tu fais des recherche de mots (1 à 4) sur la description du site, c'est bien ça ?
 
Je vois le mot "match" dans ta requête, mais ça ne semble pas être le mot-clé de MySQL pour la recherche lexicale, mais plutôt le nom d'un champ. Je ne sais pas trop ce que sont ces "REGEXP", mais ça ressemble bien à du LIKE déguisé. Cherche pas plus loin, c'est ça le problème de ton système. Même pourrie, y'a pas de raison qu'avec 5 Mo ça ramme... Sauf avec l'utilisation de LIKE.
 
Concentre-toi donc en premier sur les fonction d'indexation de texte de MySQL, notamment le mot-clé "MATCH". Tu devrais trouver pas mal de doc sur le sujet, et des gens qui pourront t'aider ici.
 
En tout cas, ne splite pas tes tables en plusieurs, surtout si c'est pour faire un UNION dessus ensuite, y'a rien de pire.
 
Par contre, si t'as l'extension du DNS qui entre en jeu dans tes filtres, tu ferais bien de mettre cette info toute seule dans un champ, et l'indexer correctement, tu vas gagner beaucoup de temps.
 
En parlant d'indexation, vérifie que tes champs sont indexés correctement en fonction de tes filtres. Pour 5 Mo tu vas pas voir grand-chose, mais quand t'aura 5 Go, tu verras que c'est bien de concerver les mêmes perfs que quand elle faisait 5 Mo ;)

mood
Publicité
Posté le 19-01-2006 à 23:39:09  profilanswer
 

n°1287998
erwan83
Du Shift DEL tu te méfieras !
Posté le 19-01-2006 à 23:47:55  profilanswer
 

match est le champ ou je stocke le titre
voici un exemple de requete, la plus longue, pour une chaine de 4 mots en vrac
 

Citation :

$requete = " SELECT *  FROM `moteur` WHERE `truc` REGEXP '($mot[0])' AND `truc` REGEXP '($mot[1])' AND `truc` REGEXP '($mot[2])'  AND `truc` REGEXP '($mot[3])'ORDER BY 'cle' DESC LIMIT ".$debut.", 10";
$result = mysql_query($requete,$link)  or die ('Erreur1 :'.mysql_error() );
$select = " SELECT count(cle) FROM `moteur` WHERE `truc` REGEXP '($mot[0])' AND `truc` REGEXP '($mot[1])' AND `truc` REGEXP '($mot[2])' AND `truc` REGEXP '($mot[3])' ";


 
C'est clair que c'est lourd mais le LIKE passerait pas parce que :
 
"ceci est mon site en voici la description"  
NOT LIKE  
"mon site"
 
REGEXP permet de trouver la chaine recherchée n'importe où dans le champ
si je demande "te en voi" il va trouver.
evidemment j'ai mis une parade avant de lancer la requete mais dans l'absolu....
 
Avec LIKE ca marche comment ? LIKE '%requete ???  
Est-ce plus rapide qu'avec un REGEXP ?
Tant de questions...


Message édité par erwan83 le 19-01-2006 à 23:50:18

---------------
http://www.ypikay.com
n°1288002
sub1
Posté le 19-01-2006 à 23:55:15  profilanswer
 

Hello,  
je pense que l'utilisation d'un index FULLTEXT et de MATCH ... AGAINST... peut donner de bons résultats
 

n°1288004
Arjuna
Aircraft Ident.: F-MBSD
Posté le 19-01-2006 à 23:56:31  profilanswer
 

LIKE '%te en voi%' ça marche pareil et c'est plus propre.
 
Mais cherche "MATCH", c'est infiniment mieu.
 
Surtout que si t'as comme recherche :
 
"la chasse aux lapins"
 
Et que dans la description d'un site t'as :
 
"comment chasser un lapin"
=> MATCH va permettre de retrouver quand même ce site. Car il procède à une analyse bien plus intelligente que le simple LIKE, et en plus il est plus rapide (que demande le peuple ?)
 
En gros, MATCH (et fonctions dérivée, FREETEXT, CONTAINS, etc. -d'ailleurs FREETEXT c'est le plus simple à utiliser puisqu'il analyse une phrase entière-) ça permet de faire un peu comme google.
 
Sans parler du fait que tes résultats seront pondérés avec un taux de pertinance, ce qui est pas mal...
 
Genre, je cherche :
 
"toto à la plage"
 
En premier, je vais retrouver le site perso de toto avec ses photos de vacances.
Et en second, je vais retrouver les sites des plages du coin.
Sans parler des sites des adorateurs de toto qui parlent de lui.
 
Quand bien même seul le premier site contiens les deux mots retenus pour la recherche (à et là son ignorés avec ce type de recherche)

Message cité 1 fois
Message édité par Arjuna le 19-01-2006 à 23:57:10
n°1288008
erwan83
Du Shift DEL tu te méfieras !
Posté le 20-01-2006 à 00:01:25  profilanswer
 

FORMIDABLE...
Bon je vais avoir du pain sur la planche.
Heureusement que demain soir c'est le week end...
Merci beaucoup


---------------
http://www.ypikay.com
n°1288009
Sh@rdar
Ex-PhPéteur
Posté le 20-01-2006 à 00:01:55  profilanswer
 

attention avec la recherche fulltext, ça peut amener des choses étranges (un résultat trop présent est jugé non pertinent donc il n'est pas retourné par exemple) ;)


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1288013
erwan83
Du Shift DEL tu te méfieras !
Posté le 20-01-2006 à 00:04:33  profilanswer
 

Hé hé hé
description = la plage, la plage, la plage, la plage, la plage, la plage, la plage, la plage, la plage, la plage, la plage, la plage, la plage, la plage, la plage, la plage, la plage, la plage, la plage, la plage...
Trop bon !!!!
 :lol:   :pt1cable: :lol:


---------------
http://www.ypikay.com
n°1288016
Sh@rdar
Ex-PhPéteur
Posté le 20-01-2006 à 00:07:40  profilanswer
 

attention, c'est pas de ça que je parle
 
admettons qu'un mot soit présent dans plus de 75% de tes lignes (le mot site) alors la recherche n'est plus pertinente sur ce mot (à quoi bon le chercher puisqu'il est partout ou presque ?) et donc ne retourne rien :)
 
enfin, tout ça c'était la dernière fois que j'ai lu la doc mysql sur les recherches fulltext


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1288017
erwan83
Du Shift DEL tu te méfieras !
Posté le 20-01-2006 à 00:09:54  profilanswer
 

Ben y faut que je lise la mienne aussi....
PFFF 400 pages...
SQL aux éditions Campus Presse (faisons un brin de pub)


---------------
http://www.ypikay.com
n°1288226
erwan83
Du Shift DEL tu te méfieras !
Posté le 20-01-2006 à 12:10:51  profilanswer
 

Arjuna a écrit :

LIKE '%te en voi%' ça marche pareil et c'est plus propre.
 
Mais cherche "MATCH", c'est infiniment mieu.
 
Surtout que si t'as comme recherche :
 
"la chasse aux lapins"
 
Et que dans la description d'un site t'as :
 
"comment chasser un lapin"
=> MATCH va permettre de retrouver quand même ce site. Car il procède à une analyse bien plus intelligente que le simple LIKE, et en plus il est plus rapide (que demande le peuple ?)
 
En gros, MATCH (et fonctions dérivée, FREETEXT, CONTAINS, etc. -d'ailleurs FREETEXT c'est le plus simple à utiliser puisqu'il analyse une phrase entière-) ça permet de faire un peu comme google.
 
Sans parler du fait que tes résultats seront pondérés avec un taux de pertinance, ce qui est pas mal...
 
Genre, je cherche :
 
"toto à la plage"
 
En premier, je vais retrouver le site perso de toto avec ses photos de vacances.
Et en second, je vais retrouver les sites des plages du coin.
Sans parler des sites des adorateurs de toto qui parlent de lui.
 
Quand bien même seul le premier site contiens les deux mots retenus pour la recherche (à et là son ignorés avec ce type de recherche)


 
Heu c'est encore moi :)
j'ai pas trouvé MATCH dans ma doc et je sais pas comment ça fonctionne...


---------------
http://www.ypikay.com
mood
Publicité
Posté le 20-01-2006 à 12:10:51  profilanswer
 

n°1288231
sub1
Posté le 20-01-2006 à 12:20:53  profilanswer
 

Autant prendre la doc officielle....
 
http://dev.mysql.com/doc/refman/5. [...] earch.html


Message édité par sub1 le 20-01-2006 à 12:21:14
n°1288232
erwan83
Du Shift DEL tu te méfieras !
Posté le 20-01-2006 à 12:22:51  profilanswer
 

Heu ouaiche ouaiche
merci


---------------
http://www.ypikay.com
n°1288245
Arjuna
Aircraft Ident.: F-MBSD
Posté le 20-01-2006 à 12:31:51  profilanswer
 

Sinon, cherche plutôt FREETEXT si ça existe en MySQL (il me semble que oui)

n°1288251
Sh@rdar
Ex-PhPéteur
Posté le 20-01-2006 à 12:37:04  profilanswer
 

regarde à FULLTEXT :)
 
ici : http://dev.mysql.com/doc/refman/4. [...] earch.html


Message édité par Sh@rdar le 20-01-2006 à 12:38:06

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1288451
erwan83
Du Shift DEL tu te méfieras !
Posté le 20-01-2006 à 17:04:12  profilanswer
 

Bon, vu que ce post semble interesser du monde (ce dont je suis ravi) je vais balancer des infos en temps réel... (ou presque)
Premier point : j'ai retravaillé le code de l'EXE qui scanne les URL. il enregistrera dans les champs suivants:
match : TITLE
description : DESCRIPTION
motcle :  KEYWORDS
insertion : date à laquelle il decouvre la page
url : ben l'adresse de la page
cle : auto incrementation


---------------
http://www.ypikay.com
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
Select dans un UpdateProb de variables php dans requête mysql
SQL : Gros problème de lenteur sur un UPDATEMigration de MySQL 3 vers MySQL 5
Mysql => programme sur pc ( en c++, c, ... )[SGBD/SQL] Requete INSERT avec sous requete SQL et VALUES
[MySQL] Comment diminuer (optimiser ?) la taille d'un base[MySQL] Sélection d'un même champs dans plusieurs tables
probléme MySql et visual.net 2003[Resolu] [PHP-MySQL] Serveur MySQL derrière un proxy
Plus de sujets relatifs à : MySQL => UPDATE à la place de INSERT ? possible ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR