Version complète: sur le forum Webmaster Hub : demande aide pour dev moteur de rech multicritères
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
tonguim
Bonjour

Je voudrais concevoir un moteur de recherche multicritères, en Php/MySql. Pensez-vous que le couple (Php/MySql) soit le mieux adapté pour ce projet? pourquoi?
Connaissez vous des sites qui contiennent de la documentation sur
le sujet (analyse, conception et développement d'un moteur de recherche multicritères)?

Merci de m'aider

tonguim
Monique
Bonjour,

Voilà deux sources d'information :
- Réaliser un moteur de recherche interne en PHP
- Moteur de recherche avec swish-e
tonguim
Merci Monique pour ta reponse; j'exploite les sites dont tu m'as donne les adresses.
tonguim
Bonjour,

le moteur de recherche multicritères que je voudrais réaliser est pour un site d'environ 500 pages.
Certains m'ont conseillé de ne pas réinventer la roue, et d'utiliser plutôt un moteur déjà existant quelque part, que je personaliserai.
Qu'en dites vous? Pouvez vous me conduire vers des sites qui m'aideront dans ce sens?

Merci pour votre aide
Anonymus
Bonjour,

Un moteur entierement en php est phpdig, qui convient bien pour de petits sites. (je suis monté jusqu'à 1 000 000 de lignes dans l'index wink.gif ) : http://www.phpdig.net/

De plus, le fait qu'il soit écrit en php//mysql aide pour développer de nouveaux modules, voire le personnaliser.

Tu devrais pouvoir très facilement en faire un moteur multi critère. Mais au fait, qu'entends tu par 'multi critères' ?

Seul bémol, la liste de discussion est en anglais... mais ils sont très compréhensifs si tu ne maitrises pas bien la langue biggrin.gif

Anonymus.
tonguim
Merci a tous pour vos réponses; un moteur de recherche multicritères permet de réaliser une recherche à partir de plusieurs critères (2, 5 10, ou plus) entré par l'utilisateur, contrairement à un moteur de recherche monocritères qui fait la recherche à partir d'un seul critère.
Anonymus
CITATION(tonguim @ vendredi 02 avril 2004, 17:31)
(...)un  moteur de recherche multicritères permet de réaliser une recherche à partir de plusieurs critères (2, 5 10, ou plus) entré par l'utilisateur, (...)

Bonjour,

Ceci ne dit pas vraiment ce que tu entends par multi critère ?

Recherche possible :
- avec plusieurs mots,
- avec plusieurs catégories, plusieurs thèmes,
- plusieurs 'masques', filtres' (comme google, avec ses : intitle, inurl, ...)


Anonymus.
tonguim
La recherche multicritère se fera par plusieurs mots clés.
Merci.
rottman
CODE
<?php
$q = $_GET['q']

 if (!$q) include("index-body.html");      
   
 else {            

     $table = explode(" ", $q);      

     $nb_mots = count($table);      

              if ($table[0]=="un"        
             OR $table[0]=="une"
             OR $table[0]=="de"
             OR $table[0]=="des"
             OR $table[0]=="du"
             OR $table[0]=="la"
             OR $table[0]=="les")

{ $sql = "SELECT * FROM moteur WHERE description LIKE '%abstardpa%' OR title LIKE '%ehfzhrs%' "; }

else { $sql = "SELECT * FROM moteur WHERE description LIKE '%$table[0]%' OR title LIKE '%$table[0]%' "; }    

         for ($i = 1; $i < $nb_mots; $i++) {
                           
if ($table[$i]=="un"            
                            OR $table[$i]=="une"
                            OR $table[$i]=="de"
                            OR $table[$i]=="des"
                            OR $table[$i]=="du"
                            OR $table[$i]=="la"
                            OR $table[$i]=="les")
   
                            {sql .= " "; }                                                              
                           
else { $sql .= "OR description LIKE '%$table[$i]%' OR title LIKE '%$table[$i]%'"; }    
                         }        
          $sql .= " LIMIT 0,10";        
                   
       
$connexion = mysql_connect("localhost", "LOGIN", "PASS");                        
$result = mysql_db_query("DATABASE", $sql);                                              
$nb_sites = mysql_num_rows($result);                              

          if ($nb_sites == 0    OR $q=='+'
    OR $q==' '
    OR $q==''
    OR $q=='.'
    OR $q==','
    OR $q=='\''
    OR $q=='"'
    OR $q=='?'
    OR $q=='!') include("no-result-body.html");        
    mysql_close($connexion);              
    else include("result-body.php");          
?>


Voila ça c'est la page de recherche, alors maintenant tu crées une page index avec le formulaire de recherche, cete page s'appelle index-body.html, une page qui dit que y'a pas de resultat : no-result-body.html et une page en php qui affiche les resultats, pour afficher les resultats tu peux faire une boucle en utilisant :

CODE
<?php echo ''.htmlentities($data['url']).''; ?>
<?php echo ''.htmlentities($data['description']).''; ?>
<?php echo ''.htmlentities($data['title']).''; ?>


et tu crées une table moteur avec les infos que tu as besoin !
Anonymus
Bonjour,

Pour les 2 premières lignes, tu peux utiliser l'arobase qui te permet de tester si la variable existe, et de lui donner la valeur de cette variable (exemple 1) :
CODE
// exemple 1 :
if (@$q = $_GET['q'] )echo"<br>ok";
echo "<br>--".$q;
//exemple 2 :
if (isset($q)){echo"oui";}else echo"non";

Attention, dans ce cas ci, la variable $q n'existe toujours pas, mais pourtant, elle ne génère pas d'erreurs (exemple 2)
Tu peux utiliser la fonction in_array, au lieu de mettre 6 $table[], à chaque fois, comme l'indique l'exemple ci dessous :
CODE
<?

$bad_word = array("un","une","de","des","ou");

$txt="un petit mot";

$a_word=explode(" ",$txt);

foreach ($a_word as $value) echo"<br>".( in_array(trim($value),$bad_word) ?"Un mauvais mot":"Mot gentil")." : <b>".$value."</b>";

?>


Il te sera ainsi plus facile de compléter ton tableau.

Anonymus.
rottman
re !

J'ai essyé cette fonction mais j'ai un problème, ça me fait une parse erreur et en + sur dreamweaver : in_array ne se met pas en bleu comme toute les fonctions !

CODE
...            
$bad_words = array("un","une","de","des","du","la","les")

if (in_array ($table[0], $bad_words))
...


mais où est le problème ?
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.