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

Langage PHP Discussion :

[Tableaux] Demande de conseil pour la création d'un moteur de recherche en php


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 189
    Points : 57
    Points
    57
    Par défaut [Tableaux] Demande de conseil pour la création d'un moteur de recherche en php
    Bonjour,

    je souhaite programmer un moteur de recherche pour mon site pro... enfait le moteur de recherche doit rechercher dans plusieurs colonne de ma base de donnée
    par exempe nom_site, description, autre , etc...

    la pour le moment ce que je fais, je decoupe la phrase en mot, et je fais chaque fois une requete de ce genre pr chaque mot...

    $requete_moteur="select distinct *
    from sites_en_vente
    where (nom like '%".$tableau_chaine[$i]."%' OR description like '%".$tableau_chaine[$i]."%' OR nom_domaine like '%".$tableau_chaine[$i]."%' OR descri like '%".$tableau_chaine[$i]."%')";

    et ca fait ca pr chaque mot mais le problème c'est que les resultats peuvent apparaitre plusieurs fois et c pas pratique pr mettre tt ca sur plusieurs pages...

    avez-vous une idée à me proposer???

    merci

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Je te proposes de jeter un oeil sur les fonctions mysql qui pourraient t'aider : Boolean Full-Text Searches

  3. #3
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Points : 1 071
    Points
    1 071
    Par défaut
    un requete avec des autant de LIKE et autant de %, j'espere que t'as un petit site

    Plus sérieusement, tu devrais tenir une table de mots de "nom" (puisque c'est la colonne que tu cherche).
    Je m'explique en prenant un exemple.
    Sur un forum style PHPBB, lorsqu'on ecrit un message, chaque mot d'une taille supérieur à x lettres est stocké dans une table, avec à coté l'ID du message dans lequel on le trouve.
    Ainsi, lorsque tu cherche un mot, tu cherches uniquement dans cette table tous les IDs des messages contenant ce mot.
    Puis tu affiche ces messages
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  4. #4
    Membre éprouvé
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Points : 1 118
    Points
    1 118
    Par défaut
    Le tout est déja de savoir si tu peux utiliser des requetes imbriquées ou non, c'est beaucoup plus simple a concevoir en non-imbriqué mais l'imbriqué est beaucoup plus performant et rapide, mais je pense que tu ne veux pas concurrencer Google non plus
    Pour le mien qui n'était pas en imbriqué j'ai dû le faire tres contrôlé pour gagner en performance ! je m'en sert encore meme avec de grosse base de donnée pas de soucis pour le moment !
    Peut etre quelques conseil :
    Par exemple tu utiliser des "drapeaux",
    Je m'explique, admettons :

    Tu commence par faire un SELECT DISTINC surToutestes Tables WHERE
    tu met un flag =0 par ex

    puis en suite suivant les champs rempli tu fait un truc du genre
    si le drapeau est a 0 => c'est le premier "truc" apres le where donc
    d.machin = '".POST['machin']."'"
    sinon
    AND d.machin = '".POST['machin']."'"

    et ainsi pour les autres champs comme ca tu ne te preocupe plus de savoir quel champs est rempli ou pas ni dans quel ordre...

    Pareil lorsque tu cherche plusieurs truc avec "IN ( " depuis un tableau
    tu parcours le tableau et si c'est le premier parametre tu ne met pas de , sinon tu en met une devant...

    etc, etc....

    La gestion des dates et de fourchettes de date n'est pas tres compliquée si on le fait calmement



    Je te déconseille fortement d'utiliser trop de LIKE c'est pas pertinant du tout et c'est tres lourd !

    Moi j'ai mis 1 journée à le faire "a la bourrin" et 3 jours à l'optimiser


    bon courage !
    Tiens moi au courant si tu as besoin (sur le forum bien sur )
    C'est le signe d'un fou, qu'avoir honte d'apprendre
    Ubuntu 10.04 Lucid Lynx @home
    LE guide libre Linux & Ubuntu pour tous : Simple comme Ubuntu

  5. #5
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Citation Envoyé par SnakemaN
    Pareil lorsque tu cherche plusieurs truc avec "IN ( " depuis un tableau
    tu parcours le tableau et si c'est le premier parametre tu ne met pas de , sinon tu en met une devant...
    Vive implode()

  6. #6
    Membre éprouvé
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Points : 1 118
    Points
    1 118
    Par défaut
    Citation Envoyé par Mr N.
    Vive implode()
    Aussi mais a l'époque j'étais petit.... et pis c'etait un vieille version de MySQL
    C'est le signe d'un fou, qu'avoir honte d'apprendre
    Ubuntu 10.04 Lucid Lynx @home
    LE guide libre Linux & Ubuntu pour tous : Simple comme Ubuntu

Discussions similaires

  1. Demande de conseils pour la création d'un jeu vidéo !
    Par Sullivan91610 dans le forum Création de jeux vidéo
    Réponses: 1
    Dernier message: 02/04/2015, 18h05
  2. [AC-2013] Demande de Conseil pour création de formulaire
    Par solstyce39 dans le forum IHM
    Réponses: 3
    Dernier message: 27/10/2014, 21h27
  3. [MySQL-5.6] Demande de conseil pour la création d'une table
    Par steel-finger dans le forum MySQL
    Réponses: 1
    Dernier message: 04/08/2014, 11h04
  4. Réponses: 2
    Dernier message: 24/10/2012, 10h25

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