Base de Donnée et requête de recherche élaborée

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

simplyhere
Nouveau WRInaute
 
Messages: 1
Inscription: Dim Jan 14, 2007 17:13

Base de Donnée et requête de recherche élaborée

Message le Dim Jan 14, 2007 17:33

Bonjour, j'ai réalisé un mini moteur de recherche de mots clefs dans une base.
J'ai un formulaire avec un champ a=motclef1 motclef2 motclef3 ...
Je récupère la valeur :
Code: Tout sélectionner
$a=$_GET['a'];
j'exécute la fonction trim sur le champ, j'exécute la fonction htmlentities toujours sur ce champ.
et ensuite je pars sur la requête sql comme ceci :
Code: Tout sélectionner
$var=explode(' ',$a);
    for ($i=0 ; $i<count ($var) ; $i++)
         {
         $t0=$var[$i];
         $selectcommande.="LIKE '%$t0%' OR membres LIKE '%$t0%' ";
         }
$requete="SELECT * FROM matable WHERE listingpage ".$selectcommande." ";


Petit programme que l'on retrouve facilement sur le web.Seulement, si les mots contiennent des accents ça marche mais comment faire une recherche plus rapide si cela existe, plus précise car les résultats sont vastes, et surtout si je cherche théo puis-je touver theo (sans accent)?

J'ai trouvé des expressions comme ceci mais je ne fais pas le rapprochement :
LIKE CONVERT( _utf8 '%motclef%' USING ) COLLATE
OR `champ` LIKE CONVERT( _utf8 '%motclef%' USING utf8 ) ...

Quel est le mieux ?

caphar
Nouveau WRInaute
 
Messages: 6
Inscription: Lun Mar 27, 2006 12:55

Message le Mar Jan 23, 2007 23:26

Il ne me semble que MySQL est insensible à la casse et aux accents, en tout cas sur mon MySQL 4.0. Tu peux donc trouver "theo" en tapant "théo".

Pour avoir des résultats plus précis lorsque l'utilisateur tape plusieurs mots, tu as deux options :
- limiter à l'expression exacte sans tenir compte des accents (ce qui peut amener beaucoup de résultats nuls)
- mettre en place un système de pondération en attribuant un score de pertinence à chaque résultat.

Sur les grosses bases (recherche plein texte dans les titres, accroches et corps d'articles), j'ai un système plutôt lourd mais apparemment assez fonctionnel qui :
- crée une table temporaire recherche_temp avec l'intégralité des résultats obtenus par la requête de base
- attribue des points par des UPDATES sur les lignes de recherche_temp : +1 si l'un des mots apparaît dans le corps, +3 dans l'accroche, +5 dans le titre
- attribue des points supplémentaires si le titre ou l'accroche contient l'expression exacte (espaces compris)

Tu te retrouves donc avec une table où tu peux faire un SELECT sur l'ensemble des résultats et les afficher par score descendant.

J'espère que c'est assez clair....


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

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 Base

  • Suggestions Google Suggest
    Cet outil vous permet d'obtenir une liste de 10 mots ou expressions suggérés par Google sur la base d'un mot que vous fournissez.


Qui est en ligne

Utilisateurs parcourant ce forum: tryan et 0 invités