IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Moteur de Recherche en PHP [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 9
    Par défaut Moteur de Recherche en PHP
    Bonjour,

    Je me permet de poster ce message non pas pour avoir le code source mais des pistes qui pourrait m'amener à trouver la solution.

    J'aimerai développer un moteur de recherche permettant de rechercher un mot voire des mots dans une base de données.

    Pour un mot , j'arrive facilement avec une simple recherche, cependant plusieurs mots ça se complique légèrement. J'avais penser à découper ma chaine, rechercher d'abord avec la phrase complète, puis faire une autre recherche avec les mots, mais ça ferait plusieurs requêtes.

    Si vous avez des petites pistes pour me mettre dans le bon chemin je suis preneur.

    Merci d'avance

    J'ajoute que j'aimerai les classer par pertinence.

  2. #2
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    hmmm pour le classement par pertinence je ne sais pas trop... mais pour le reste ton idée est bonne, il faut bel et bien "casser" ta chaine afin d'en récupérer tous les mots...

    Voici un code que j'ai écrit il n'y a pas longtemps, ça pourra t'aider je pense ;-)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    <?php
    if( !empty($_POST["frm_search"]) ) {
    	echo '<h1>Search results for <em>'.$_POST["frm_search"].'</em></h1>';
     
    	$searchIN = array();
     
    	if($_POST["frm_in"]["authors"] == "on") {
    		array_push($searchIN, "author");
    	}
    	if($_POST["frm_in"]["albums"] == "on") {
    		array_push($searchIN, "album");
    	}
    	if($_POST["frm_in"]["songs"] == "on") {
    		array_push($searchIN, "song");
    	}
    	if($_POST["frm_in"]["lyrics"] == "on") {
    		array_push($searchIN, "lyrics");
    	}
     
    	for( $j = 0; $j < count($searchIN); $j++ ) {
    		/***** VARIABLES ****/
    		// NOMBRE DE RESULTATS PAR PAGE
    		$limit=2;
    		// RECHERCHE AVEC TOUS LES MOTS : METTRE "and"
    		// RECHERCHER LES PAGES QUI CONTIENNENT AU MOINS UN MOT : METTRE "or"
    		$et_ou = "AND";
     
    		/****** PREPARATION DE LA REQUETE ******/
    		$mot = strtolower($_POST["frm_search"]);
    		$mots = split(" ",$mot);
    		$nombre_mots = count($mots);
     
    		$texte = "Pages contenant <b>&quot;$mots[0]&quot;</b>";
    		$phrase = "'%$mots[0]%'";
     
    		for( $i=1; $i < $nombre_mots; $i++) {
    			$phrase .= " ".$et_ou." ".$searchIN[$j]." LIKE '%$mots[$i]%'";
    			$texte .= " ";
    			if($et_ou == "and"){
    				$texte .= "et";
    			}else {
    				$texte .= "ou";
    			}
    			$texte .= " <b>&quot;$mots[$i]&quot;</b>";
    		}
     
    		if($debut == "") {
    			$debut = 0;
    		}
    		$debut = $page*$limit;
     
     
    		// REQUETE & AFFICHAGE DES RESULTATS
    		// ------ debug
    		if( $searchIN[$j] == "song" )
    			echo "<h2>in song name</h2>";
    		else
    			echo '<h2>in '.$searchIN[$j].'</h2>';
     
    		$q = mysql_query("SELECT * FROM lyrics WHERE ".$searchIN[$j]." LIKE ".$phrase."") or die(mysql_error()); // OR SOUNDEX(author) LIKE SOUNDEX('".$_POST["frm_search"]."
    		if( mysql_num_rows($q) == 0 )
    			echo "<p>No results found</p>";
    		else {
    			echo "<ol>\n";
    			while( $r = mysql_fetch_array($q) ) {
    				echo '<li><a href="lyrics/'.URL($r["author"]).'/'.URL($r["album"]).'/'.URL($r["song"]).'.html">'.$r["author"].' - '.conv($r["song"]).'</a></li>';
    			}
    			echo "<ol>\n";
    			echo "<p>&nbsp;</p>";
    		}
    	}
    }
    else {
    	echo "<h1>Search in <em>Easy-Lyrics</em></h1>";
    	include("include/frm_search.php");
    }
    ?>
    Bon comme tu peux le voir, le script est pas tout à fait fini car j'ai déjà prévu un affichage sur plusieurs pages mais c'est pas encore défini dans la requête :p

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 33
    Par défaut Recherche Full-text
    Salut

    Pourquoi ne pas utiliser la recherche en texte intégral ?
    C'est tout à fait adapté pour faire un moteur de recherche en php.

    Bonne soirée

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 9
    Par défaut
    Bonjour,

    Merci pour vos deux réponses, je vais étudier ça de plus près


    Cordialement,
    Marian

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Moteur de recherche et php
    Par Orb Dorb dans le forum Langage
    Réponses: 2
    Dernier message: 25/05/2007, 06h55
  2. [MySQL] Moteur de recherche en php
    Par FerdinandC dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 27/04/2007, 15h16
  3. Réponses: 5
    Dernier message: 10/07/2006, 09h42
  4. [Tableaux] Moteur de recherche en PHP
    Par Msieurduss dans le forum Langage
    Réponses: 3
    Dernier message: 16/06/2006, 14h25
  5. [Tableaux] comment faire un moteur de recherche en php
    Par lindouchine dans le forum Langage
    Réponses: 4
    Dernier message: 23/03/2006, 23h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo