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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Nombre d'occurences => toujours besoin d'aide

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Nombre d'occurences => toujours besoin d'aide

n°1507647
erwan83
Du Shift DEL tu te méfieras !
Posté le 26-01-2007 à 22:27:13  profilanswer
 

Bonjour  
Voila une ligne de code  
 
$requete = " SELECT * FROM `base` WHERE (`match` LIKE '%$mot[1]%' OR `description` LIKE '%$mot[1]%' OR `motcle` LIKE '%$mot[1]%') ORDER BY `valeur` DESC LIMIT 0 , 20 ";  
 
etc etc etc  
 
or je voudrais faire un UNION qui me retourne deux types de résultats les uns après les autres :  
select .... where condition1 UNION select ..... where condition2  
exemple: on recherche une phrase  
je voudrais retourner les solutions LIKE '%PHRASE%' et à la suite les solutions LIKE '%mot1%' puis LIKE '%mot2%' etc etc  
 
PRIMO :  
Est-ce faisable ?  
 
SECUNDO :  
pouvez vous me filer un bout de code SVP ?  
 
Merci
 
VOICI UNE REPONSE :
 
union = sql  
ta requette = sql  
Ta question n'a aucun rapport avec le php.  
Ton message n'a d'ailleur rien à voir avec du php (même si le texte de ta requette est modifié par du php)  
 
Conclusion : encore une question posé dans la mauvaise section.    
 
En attendant, si tu cherches à obtenir un résultat plus vite en mettant des union à la place des and et or, alors non ca ne marchera pas : tu risques de n'obtenir ton résultat qu'aprés un temps 2 à 3 fois plus long qu'avec ta requette actuelle.  
Par contre, ce que tu peux faire avec Mysql, c'est mettre la colonne en fulltext et faire des recherches de type fulltext. (voir doc de mysql pour plus de détail) Ca ira plus vite et en plus ca te permettra de trier les résultats en fonction du nombre d'occurence des mots recherché.
 
QUESTION (DE MOI)
 
admettons donc que j'ai un champ fulltext de environ 1500 caractères de long (ouf si si)
je recherche "chien" et "toilette" et "marseille"
le nombre d'occurence ... comment ça marche ???
 
Encore une fois merci à tous


Message édité par erwan83 le 27-01-2007 à 08:45:08

---------------
http://www.ypikay.com
mood
Publicité
Posté le 26-01-2007 à 22:27:13  profilanswer
 

n°1507675
MagicBuzz
Posté le 26-01-2007 à 23:53:27  profilanswer
 

je sais pas exactement sous MySQL.
 
sur les autres SGBD, c'est généralement un rang que tu reçois, c'est à dire un indice de pertinence.
 
genre :

Citation :

le chien de gaston court après un autre chien


Citation :

le chien de gaston croque un os. puis un autre chien vient lui piquer son os, avant de filer. le malheureux chien se met alors à sa poursuite


=> ma seconde phrase contient plus de chiens que la première. par contre, leur densité est plus grande, donc la réponse semble plus pertinante. il aura donc un rang suppérieur.
 
si mysql se contente de compter, tu auras respectivement 2 et 3.
ensuite, ce rang est confondu pour tous les mots.
 
sâchant que la densité de l'ensemble des mots impacte aussi le range.
genre tu chercher "chien" et "os". si t'as une ligne qui ne parle que de chien, elle aura un rang plus faible que si t'as une ligne qui mentionne une seule fois les deux mots. (d'où l'intérêt d'avoir un rang et non un nombre d'occurencs)


Message édité par MagicBuzz le 26-01-2007 à 23:53:51
n°1507705
erwan83
Du Shift DEL tu te méfieras !
Posté le 27-01-2007 à 08:43:53  profilanswer
 

ça oui j'avais compris mais c'est pour créer la base que je pédale :
voici un exemple sur Nexen.net :
 
La recherche en texte intégral est effectuée par la fonction MATCH() .  
CREATE TABLE articles (id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, title VARCHAR(200), body TEXT, FULLTEXT (title,body));

 
 
INSERT INTO articles VALUES (NULL,'MySQL Tutorial', 'DBMS stands for DataBase ...'), (NULL,'How To Use MySQL Efficiently', 'After you went through a ...'), (NULL,'Optimising MySQL','In this tutorial we will show ...'), (NULL,'1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'), (NULL,'MySQL vs. YourSQL', 'In the following database comparison ...'), (NULL,'MySQL Security', 'When configured properly, MySQL ...');
 
Création de table puis insertion de données.  
 
SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('database');
 
Requete.
 
+----+-------------------+------------------------------------------+
| id | title             | body                                     |
+----+-------------------+------------------------------------------+
|  5 | MySQL vs. YourSQL | In the following database comparison ... |
|  1 | MySQL Tutorial    | DBMS stands for DataBase ...             |
+----+-------------------+------------------------------------------+
2 rows in set (0.00 sec)

 
Résultat.
 
La base de données sur laquelle je fais tourner mon moteur de recherche commence à pédaler
(voir ici => ) http://erwann.conan.free.fr/index.php
les enregistrements indexés sont ceux des blogs pour lesquels j'ai extrait le texte dans un champ 'body' et nous savons tous que les bloggueurs sont bavards ... :love:  :hello:  :pt1cable:  
 
Donc dans ma table j'ai :
le champ 'body' en TEXT
le champ 'url' en VARCHAR(255)  
le champ 'match' en VARCHAR (255) pour le TITLE du site
le champ 'description' en VARCHAR (255)
le champ 'motcle' en VARCHAR(255) qui contient tous les mots clés sans virgule
le champ 'valeur' en SMALLINT qui m'indique le nombre de fois que le site a été visité
 
J'ai voulu tenter une requete sur le champ 'body' => :kaola: trop complexe
 
donc je voudrais :
Dans un premier temps recréer cette table avec l'exemple de nexen.net  
Dans un deuxième temps pouvoir lancer des requetes sur le champ 'body'
 
Voila mon problème actuel.
A savoir que je monte jusqu'à 8 visiteurs connectés en meme temps et que donc la BDD est très sollicitée
 
MERCI DE VOTRE PRECIEUSE AIDE


---------------
http://www.ypikay.com

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Nombre d'occurences => toujours besoin d'aide

 

Sujets relatifs
Executer une requête sql à l'aide de C# qui retourne un seul enregistrAide sur ce formulaire
[Résolu] [MySQL] Problème nombre commençant par zérobesoin d'aide pour requete "bizarre"
aide sur une base de donnée !aide moi svp pour page perso internet
aide pour un problème de décalage de texte en CSSaide pour securité php
Aide langage C 
Plus de sujets relatifs à : Nombre d'occurences => toujours besoin d'aide


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