développer un moteur de recherche


algeriezik
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 39
Inscription: 12 Avr 2008

développer un moteur de recherche

Message le Jeu Aoû 27, 2009 15:41

salut,
je veux développer un moteur de recherche pour mon site dzaffaire.com
le problème je sais pas comment faire pour afficher les résultats dans des page (ex: <<ava 1-2-3......7-8 suiv>> ) mai en récupérons les résultats de 2 base de donné regarder dans le code ---la partie ou je sais pas comment faire--
voila le code que je viens de placer :
Code: Tout sélectionner
<?php
include 'connection.php';
$name=htmlentities($_POST['name']);

// récupére chaque mot
$like = '';
$names = explode(' ', $name);
foreach ( $names as $value ) {
     $like .= ( !empty($like) ) ? ' OR ' : '';
     $like .= "recherche LIKE '%$value %'";

     }
     
     
     
   // On met dans une variable le nombre de messages qu'on veut par page
$nombreDeMessagesParPage =1; // Essayez de changer ce nombre pour voir :o)
// On récupère le nombre total de messages
$retour1 = mysql_query("SELECT COUNT(*) AS nb_messages1 FROM service WHERE $like ");
$retour2 = mysql_query("SELECT COUNT(*) AS nb_messages2 FROM autre WHERE $like ");
$donnees1 = mysql_fetch_array($retour1);
$donnees2 = mysql_fetch_array($retour2);
$totalDesMessages1 = $donnees1['nb_messages1'];
$totalDesMessages2 = $donnees2['nb_messages2'];
$totalDesMessages =$totalDesMessages1+$totalDesMessages2;
echo $totalDesMessages;
// On calcule le nombre de pages à créer
$nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);
// Puis on fait une boucle pour écrire les liens vers chacune des pages
echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
    echo '<a href="recherche.php?page=' . $i . '">' . $i . '</a> ';
}
 
     if (isset($_GET['page']))
{
        $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
}
else // La variable n'existe pas, c'est la première fois qu'on charge la page
{
        $page = 1; // On se met sur la page 1 (par défaut)
}

-----------------------------------la partie ou je sai pa comment faire ---------------------------------
// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;

     
     $sql =mysql_query("SELECT service FROM service WHERE $like ORDER BY id LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage");
while($data = mysql_fetch_assoc($sql))
    {
echo '-'.$data['service'].'<br>';
}
$sql =mysql_query("SELECT objet FROM autre WHERE $like ORDER BY id LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage");
while($data = mysql_fetch_assoc($sql))
    {
echo '*'.$data['objet'].'<br>';
}
?>
   
   
   


merci d'avance


Anto1982
WRInaute passionné
WRInaute passionné
 
Messages: 1334
Inscription: 7 Mai 2009

Re: develloper un moteur de recherche

Message le Jeu Aoû 27, 2009 17:03

Well well well... ton problème viens du fait que tu essayes de récupérer des données de 2 tables (ou bases) différentes.

La première question que tu dois te poser est "Comment organiser ces résultats...?"
- Sont-ils homogènes entre les 2 bases?
- La pertinence des résultats est elle intéressante?

Ensuite, tu pourras ensuite décider d'afficher tes résultats sur 2 colonnes différentes ou alors les un à la suite des autres...

Si la pertinence des résultats n'est pas importante:
while($data = mysql_fetch_assoc($sql))
{
echo '-'.$data['service'].'<br>';
// au lieu de faire ça, tu charges les données dans une array: $array_donnees[]=$data['service'];
}
$sql =mysql_query("SELECT objet FROM autre WHERE $like ORDER BY id LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage");
while($data = mysql_fetch_assoc($sql))
{
echo '*'.$data['objet'].'<br>';
// au lieu de faire ça, tu continues à charger tes données dans une array: $array_donnees[]=$data['objet'];
}


=> Bien sur cela suppose que tes données sont homogènes entre les 2 bases...
=> Ensuite, tu fait une boucle while sur l'array que tu as chargée

Peux tu donner un exemple des données que tu veux récupérer...?


algeriezik
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 39
Inscription: 12 Avr 2008

Re: develloper un moteur de recherche

Message le Ven Aoû 28, 2009 22:56

Anto1982 a écrit:Well well well... ton problème viens du fait que tu essayes de récupérer des données de 2 tables (ou bases) différentes.

La première question que tu dois te poser est "Comment organiser ces résultats...?"
- Sont-ils homogènes entre les 2 bases?
- La pertinence des résultats est elle intéressante?

Ensuite, tu pourras ensuite décider d'afficher tes résultats sur 2 colonnes différentes ou alors les un à la suite des autres...

Si la pertinence des résultats n'est pas importante:
while($data = mysql_fetch_assoc($sql))
{
echo '-'.$data['service'].'<br>';
// au lieu de faire ça, tu charges les données dans une array: $array_donnees[]=$data['service'];
}
$sql =mysql_query("SELECT objet FROM autre WHERE $like ORDER BY id LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage");
while($data = mysql_fetch_assoc($sql))
{
echo '*'.$data['objet'].'<br>';
// au lieu de faire ça, tu continues à charger tes données dans une array: $array_donnees[]=$data['objet'];
}


=> Bien sur cela suppose que tes données sont homogènes entre les 2 bases...
=> Ensuite, tu fait une boucle while sur l'array que tu as chargée

Peux tu donner un exemple des données que tu veux récupérer...?


voila un exemple a koi l'air les pages:
http://www.dzaffaire.com/informatique.php
http://www.dzaffaire.com/telephone.php

mais en récupérons de 2 base de donné celle informatique et telephone quand il cherche le mot par exemple vente (pou une Recherche génerale).

pour la pertinence des résultats n'est pas importante et mes 2 base de donné ne sont pas homogène.
merci


Anto1982
WRInaute passionné
WRInaute passionné
 
Messages: 1334
Inscription: 7 Mai 2009

Re: développer un moteur de recherche

Message le Lun Aoû 31, 2009 8:46

Dans ce cas, je ne vois qu'une seule solution...

Tu fait comme décris plus haut et tu utilises une array un peu plus grande qui va contenir le plus d'info possible:

exemple:

dans la BDD téléphone tu as les tables a,b,c,d,e,f,g
dans la BDD informatique tu as les tables a,c,f,g

Quand tu fait l'extraction des données, tu utilises une array qui va couvrir les tables a,b,c,d,e,f,g (les champs b,d,e seront vides pour les données provenant de la BDD "informatique"...

Sinon, retravaille la structure de ta base... C'est ce qui serait le mieux. Ca te permettra plus tard d'évoluer plus facilement, de pouvoir trier tes résultats par pertinence, etc...


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :

  • Logiciel d'analyse du positionnement
    AgentWebRanking est un logiciel professionnel qui permet d'analyser le positionnement d'un ou plusieurs sites dans plus de 300 moteurs de recherche dans le monde. Vous pouvez ainsi analyser les performances du référencement pour de nombreux mots-clés.
  • Transformer des textes non cliquables en liens
    Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité