Base de Donnée et requête de recherche élaborée
2 messages
• Page 1 sur 1
- simplyhere
- Nouveau WRInaute

- Messages: 1
- Inscription: 14 Jan 2007
Base de Donnée et requête de recherche élaborée
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 :
et ensuite je pars sur la requête sql comme ceci :
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 ?
J'ai un formulaire avec un champ a=motclef1 motclef2 motclef3 ...
Je récupère la valeur :
- Code: Tout sélectionner
$a=$_GET['a'];
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: 7
- Inscription: 27 Mar 2006
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....
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....
2 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Transformer une base de donnée excel en base de donnée mysql
- recherche base de donnée !!!
- Recherche base de donnée monde
- recherche dans une base de donnée
- Insertion donnée dans base de donnée Joomla
- Comment faire une recherche simple dans une base de donnée ?
- Base de donnée
- Problème base de donnée
- Redirection base de donnée
- optimisation de la base de donnée
Consultez la description détaillée des produits ou services de Google suivants : Google Base
- Test du code HTTP d'une page
Cet outil vous permet de connaître le code HTTP renvoyé par le serveur pour une page donnée. - 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: Aucun utilisateur enregistré et 1 invité
