créer un moteur de recherche

Nouveau WRInaute
bonjour,
je veut développer un moteur de recherche pour mon sitehttp://www.dzaffaire.com/
le problème c'est comment chercher dans une base de donné avec des mots nos relier avec la fonction Like
exemple:
j'ai dans un tableau de ma base de donné : salut comment cava toi
et je cherche a trouver salut cava (on voix dans le tableau salut cava est séparer par le mot comment) donc il ne s'affiche pas :!: :!: .

voila le code que j'ai mets:
Code:
<?php
include 'connection.php';
$name=htmlentities($_POST['name']);
$sql =mysql_query("SELECT * FROM service WHERE recherche LIKE '%$name%' ORDER BY id");
while($data = mysql_fetch_assoc($sql))
    {
echo $data['titre'];
}
?>

esque il ya une solution ou une fonction pour faire ca.
merci d'avance pour les reponses :)
 
WRInaute impliqué
Avec un explode tu pourrais faire ce que tu veux je pense :

Code:
<?php
include 'connection.php';
$name=htmlentities($_POST['name']);

// récupére chaque mot
$like = '';
$names = explode(' ', $name);
foreach ( $names as $value ) {
     $like .= ( !empty($like) ) ? ' AND ' : '';
     $like .= "recherche LIKE '%value %'";
     }
$sql =mysql_query("SELECT * FROM service WHERE $like ORDER BY id");
while($data = mysql_fetch_assoc($sql))
    {
echo $data['titre'];
}
?>

Avec ca, pour la requete "comment cava", ca retourne les résultats qui contiennent "comment" et "cava".
 
WRInaute accro
RiPSO a dit:
ou alors tu peux aussi faire un replace des caracteres d'espace par des %
non car ça oblige à avoir le même ordre des mots dans la bdd
Bigb06 a dit:
Ou se tourner vers les fonctions de recherche en texte intégral:
http://dev.mysql.com/doc/refman/5.0/fr/fulltext-search.html
quand j'avais essayé de l'utiliser, ça ne m'avait pas donné des résultats convaincants
Sinon le mieux serait d'utiliser les fonctions regex http://dev.mysql.com/doc/refman/5.0/fr/regexp.html
 
WRInaute impliqué
Si tu dois rechercher dans beaucoup d'informations, le LIKE est à proscrire car trop lent, il faut se tourner vers des solutions différentes (indexation des mots-clés, etc...).
 
WRInaute impliqué
FloBaoti a dit:
Si tu dois rechercher dans beaucoup d'informations, le LIKE est à proscrire car trop lent (tout comme les recherches sur un champ texte), il faut se tourner vers des solutions différentes (indexation des mots-clés, etc...).
 
Nouveau WRInaute
NxtGen a dit:
Avec un explode tu pourrais faire ce que tu veux je pense :

Code:
<?php
include 'connection.php';
$name=htmlentities($_POST['name']);

// récupére chaque mot
$like = '';
$names = explode(' ', $name);
foreach ( $names as $value ) {
     $like .= ( !empty($like) ) ? ' AND ' : '';
     $like .= "recherche LIKE '%value %'";
     }
$sql =mysql_query("SELECT * FROM service WHERE $like ORDER BY id");
while($data = mysql_fetch_assoc($sql))
    {
echo $data['titre'];
}
?>

Avec ca, pour la requete "comment cava", ca retourne les résultats qui contiennent "comment" et "cava".
merci j vais l'esseyer
 
Discussions similaires
Haut