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

  FORUM HardWare.fr
  Programmation
  PHP

  [php] moteur de recherche

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[php] moteur de recherche

n°1078108
brains
In riding I trust !
Posté le 10-05-2005 à 16:43:57  profilanswer
 

Voilà je suis en train de coder un petit moteur de recherche pour mon futur site mais j'ai une petite question : tout d'abord le code :
 

   
 
$rqt = "SELECT * FROM news WHERE titre OR data LIKE '%$champ%' ORDER BY ID DESC";
 
   include("connect.php" );
   
   if(!($dbResult = mysql_query($rqt, $dbLink)))
   {
   print("Impossible d'effectuer la requete !\n" );
   exit();
   }
   
   $search = mysql_fetch_object($dbResult);
   if($search != "" )
   {  
       
      if(!($dbResult = mysql_query($rqt, $dbLink)))
      {
      print("Impossible d'effectuer la requete !\n" );
      exit();
      }
       
    include("structure_haut.php" );
       
    print("R&eacute;sultats de la recherche sur : <b>$champ</b>&nbsp;<br />\n" );
   
    while($search = mysql_fetch_object($dbResult))
    {
                                }
           }
           else
           {
            echo "pas de resultat";
           }


 
Le problème (qui n'en est pas un en soit) c'est que je suis obligé de faire deux fois ma requète. Une première fois pour voir si j'ai des résultats et une seconde fois pour les afficher sinon ca ne fonctionne pas. Est-ce que vous auriez une idée pour n'avoir qu'une seule requète à faire ?
 
Merci  :)


Message édité par brains le 10-05-2005 à 16:45:12

---------------
Débuter la moo chez les moants@HFR | Nikon D800 | On ne fait pas un calin chaste à une pute !, Lapattefolle
mood
Publicité
Posté le 10-05-2005 à 16:43:57  profilanswer
 

n°1078122
soju
One shot !
Posté le 10-05-2005 à 16:51:14  profilanswer
 

ta logique est bizarre, car si tu as des resultats => tu les affiches, pas besoin de 2 requetes
 
sinon j'espère que tu n'as pas trop d'enregistrement dans ta base, car LIKE '%$champ%' va faire un full scan

n°1078128
brains
In riding I trust !
Posté le 10-05-2005 à 16:53:13  profilanswer
 

soju a écrit :

ta logique est bizarre, car si tu as des resultats => tu les affiches, pas besoin de 2 requetes
 
sinon j'espère que tu n'as pas trop d'enregistrement dans ta base, car LIKE '%$champ%' va faire un full scan


 
sinon il y a une autre solution que LIKE  ?


---------------
Débuter la moo chez les moants@HFR | Nikon D800 | On ne fait pas un calin chaste à une pute !, Lapattefolle
n°1078145
soju
One shot !
Posté le 10-05-2005 à 17:05:14  profilanswer
 

brains a écrit :

sinon il y a une autre solution que LIKE  ?

indexation de mot-clefs dans une table par exemple

n°1078202
cinocks
Posté le 10-05-2005 à 17:39:22  profilanswer
 

Perso je procede ainsi:
 
-Une table des mots clés avec leur longueur
-Une table des occurences de ce mot
 
-Quand j'ai un mot precis à rechercher, je fais un egal sur les mots  clés et jointure.
 
-Quand j'ai un mot commencant par, je fais un like sur le mot clés et je filtre sur les mots clés de plus de la longueur du mot cherché -1.
 
Bien sur, il faut indexer les mots et occurences. La recherche est rapide, mais la mise en place est plus lourde. Et ca prend plus de place.
 
 
Pour exemple, j'ai 20000 mots referencés, 3 500 000 occurences de mots. Une recherche du style "+toto -titi +ta%" prend 60ms sur une titine à 700Mhz, et 400Mo de ram.


---------------
MZP est de retour
n°1078210
brains
In riding I trust !
Posté le 10-05-2005 à 17:42:57  profilanswer
 

cinocks a écrit :

Perso je procede ainsi:
 
-Une table des mots clés avec leur longueur
-Une table des occurences de ce mot
 
-Quand j'ai un mot precis à rechercher, je fais un egal sur les mots  clés et jointure.
 
-Quand j'ai un mot commencant par, je fais un like sur le mot clés et je filtre sur les mots clés de plus de la longueur du mot cherché -1.
 
Bien sur, il faut indexer les mots et occurences. La recherche est rapide, mais la mise en place est plus lourde. Et ca prend plus de place.
 
 
Pour exemple, j'ai 20000 mots referencés, 3 500 000 occurences de mots. Une recherche du style "+toto -titi +ta%" prend 60ms sur une titine à 700Mhz, et 400Mo de ram.


 
mais quand tu postes une news par exemple comment tu fais pour indexer certains mots clés et pas d'autres ?


---------------
Débuter la moo chez les moants@HFR | Nikon D800 | On ne fait pas un calin chaste à une pute !, Lapattefolle
n°1078220
cinocks
Posté le 10-05-2005 à 17:51:28  profilanswer
 

Tu commences par nettoyer le texte.
 
Tu ne gardes que les mots de plus de tant de caracteres.
 
Ensuite, ce que j'ai fait, je tiens à jour une liste de mots sans interet qui ne
seront pas listés. Cette liste est dans un fichier que je charge dans un tableau. J'ai un tableau de chaque coté. Il me suffit de garder ce qui est dans le premier qui n'est pas dans le second.
 
C'est perfectible pour le moment. Mais le nombre de mots utilisés dans le langage courant est limité. Le reste correspond generalement à des references.


---------------
MZP est de retour

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [php] moteur de recherche

 

Sujets relatifs
Comment tromper un moteur de recherche ?[URGENT Erreur SQL] Moteur de recherche PHP/SQL via formulaire HTML
Logiciel pour moteur de rechercheproblème SQL moteur de recherche
[Firefox] Ajouter un moteur de recherche d'un site dans le navigateurPouvez vous m'aider a installer un moteur de recherche svp.
[Réglé] Comment insérer Google comme moteur de recherche sur son siteMoteur de recherche sans utiliser de base de données...
mon moteur recherche ne fonctionne pasmoteur de recherche de nom de domaine
Plus de sujets relatifs à : [php] moteur de recherche


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