Jump to content
Sign in to follow this  
tonguim

demande aide pour dev moteur de rech multicritères

Rate this topic

Recommended Posts

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

Share this post


Link to post
Share on other sites

Merci Monique pour ta reponse; j'exploite les sites dont tu m'as donne les adresses.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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 ;) ) : 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 :D

Anonymus.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
(...)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.

Share this post


Link to post
Share on other sites

La recherche multicritère se fera par plusieurs mots clés.

Merci.

Share this post


Link to post
Share on other sites

<?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 :

<?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 !

Share this post


Link to post
Share on other sites

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) :

// 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 :

<?

$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.

Share this post


Link to post
Share on other sites

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 !

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

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

mais où est le problème ?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...