Probleme Moteur de recherche mysql

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics


cdpdf
WRInaute passionné
WRInaute passionné
 
Messages: 938
Inscription: Mar Mar 11, 2003 21:37

Probleme Moteur de recherche mysql

Message le Sam Déc 04, 2004 12:55

Bonjour à tout le monde
Je sais que le titre n'est pas très expressif.
Je vais vous expliquer mon problème.
J'ai un moteur de recherche sur mon site que j'ai fait moi-même avec des requêtes mysql
Mais il ne recherche que l'expression exacte et je voudrais proposer de faire une recherche comme dans l'annuaire de wri
Ou il serait possible de faire une recherche sur tous les mots ou de faire une recherche avec l'expression exacte.
en gros mon code est comme cela
Code: Tout sélectionner
$q = "select truc, machin from table_de_texte where truc LIKE '%$query%' OR truc LIKE '$query'";
$result = sql_query($q, $dbi);
$rows  = sql_num_rows($result, $dbi);
while(list($truc, $machin) = sql_fetch_row($result, $dbi)) {
echo le lien;
}

Je sais comment séparer ma requetes $query=split(" ",$query);
mais je ne sais pas comment afficher la requête s’il y a plusieurs mots

merci de votre aide
christophe


scores
WRInaute impliqué
WRInaute impliqué
 
Messages: 467
Inscription: Dim Nov 24, 2002 19:12

Message le Sam Déc 04, 2004 13:54

Pour mon moteur j'utiliseun truc du genre :

$search=strtolower($search); // on passe les mots recherchés en minuscules
$mots = str_replace("+", " ", trim($search)); // on remplace les + par des espaces
$mots = str_replace("\"", " ", $mots); // on remplace les " par des espaces
$mots = str_replace(",", " ", $mots); // on remplace les , par des espaces
$mots = str_replace(":", " ", $mots); // on remplace les : par des espaces
$tab=explode(" " , $mots); // on place les differents mots dans un tableau
$nb=count($tab);
// on compte le nbr d'élément du tableau.

// CA c'est pour la recherche en phrase exacte
if ($operateur=='exact'){
$selection2="select truc, machin from TABLE where (truc like '%$search%' or machin like '%$search%') order by titre";
}
else
// CA c'est pour la recherche par mots (avec OR ou AND)
// remplacer $operateur par OR ou AND

{
$selection2="select truc, machine from TABLE where (truc like \"%$tab[0]%\" or machine like \"%$tab[0]%\") "; //on prépare la requête SQL.
for($i=1 ; $i<$nb; $i++)
{
$selection2.="$operateur (truc like \"%$tab[$i]%\" or machin like \"%$tab[$i]%\")"; // on boucle pour integrer tous les mots dans la requête
}
$selection2.=" order by titre ";
}

if ($result_compter2=mysql_db_query($login,$selection2))


cdpdf
WRInaute passionné
WRInaute passionné
 
Messages: 938
Inscription: Mar Mar 11, 2003 21:37

Message le Sam Déc 04, 2004 14:38

je vais essayer maintenant

ps tu peux aussi faire
$query = rtrim ( $query );// pour supprimer tous les caractères blancs de fin de chaîne


ponko
WRInaute passionné
WRInaute passionné
 
Messages: 550
Inscription: Dim Nov 24, 2002 12:34

Message le Sam Déc 04, 2004 15:51

Sinon pour moi vous avez pas une soluce pour que sur mon site de recettes s'affichent les résultats de mon forum phpbb ( sur un autre hébergement) ? le soucis c'est que l'on ne peut pas lier la base sql du forum via un site externe !

ya bien google websearch mais l'intégration est pas top!

Des idées ?

pour t'aider sinon j'ai ça issue du portail artivelocity


// formatage des mots clef
$motsclef6 = explode(" ",$motsclef);
$motsclef5 = explode(" ",$motsclef);
$motsclef4 = explode(" ",$motsclef);
$motsclef3 = explode(" ",$motsclef);
$motsclef2 = explode(" ",$motsclef);
$motsclef = explode(" ",$motsclef);


/** RECHERCHE DOSSIERS ******************/


// construction de la requete sql dossier
$sql = "SELECT * FROM ".$extension."dossier";
$passage = 0;
while(list(,$motclef) = each($motsclef)) {
$motclef = AddSlashes($motclef);
if($passage) $sql .= ") AND ("; else $sql .= " WHERE (";
$sql .= "titreDossier LIKE '%$motclef%' OR chapoDossier LIKE '%$motclef%'";
$passage = 1;
}


$sql .= ") and pubDossier='1'";

MERCI D'AVANCE


cdpdf
WRInaute passionné
WRInaute passionné
 
Messages: 938
Inscription: Mar Mar 11, 2003 21:37

Message le Sam Déc 04, 2004 17:09

Merci a toi Scores cela fonctionne très bien.
Je dois encore faire quelques petites modifications et cela sera sur mon site.

Pour ponko j'ai peut être une solution
Tu peux faire avec un form qui renvoi sur une page iframe qui tu auras fait toi-même pour pouvoir afficher les résultats du forum phpbb.

goa103
WRInaute discret
WRInaute discret
 
Messages: 78
Inscription: Jeu Mai 15, 2003 9:49

Message le Mer Oct 19, 2005 16:49

Juste pour info, pour développer un moteur de recherche avec PHP/MySQL, il est plus simple et efficace de passer par la fonction MATCH de MySQL et ses fonctionnalités FULL TEXT. En mode BINARY vous pourrez utiliser des opérateurs comme + et - pour inclure ou exclure des expressions, une liste complète des fonctionnalités se trouvent dans le manuel : (), *... C'est bien plus puissant que d'utiliser LIKE et en gros ça vous permet d'avoir un moteur de recherche "style Google" mais en moins puissant... évidemment :).


Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par Julien Coquet, expert certifié officiellement par Google Analytics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google SearchMash

  • 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 0 invités