Probleme Moteur de recherche mysql

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics


cdpdf
WRInaute impliqué
WRInaute impliqué
 
Messages: 948
Inscription: 11 Mar 2003

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 occasionnel
WRInaute occasionnel
 
Messages: 496
Inscription: 24 Nov 2002

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 impliqué
WRInaute impliqué
 
Messages: 948
Inscription: 11 Mar 2003

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 impliqué
WRInaute impliqué
 
Messages: 550
Inscription: 24 Nov 2002

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 impliqué
WRInaute impliqué
 
Messages: 948
Inscription: 11 Mar 2003

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: 15 Mai 2003

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


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

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 les experts Google Analytics de Ranking Metrics.

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