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 :

recherche par similarité


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 30
    Points : 22
    Points
    22
    Par défaut recherche par similarité
    bonjour,

    je cherche une solution pour effectuer une recherche par élément similaire
    c'est a dire

    ex :
    dans ma base j'ai stocké dans un champ titre : F.E.A.R.

    fear ou f.e.a.r. ou encore FEAR ressortira le résultat présent dans la table (donc insensible à la casse en plus de gérer les points ou autre tiret)

    les requêtes like ou regex ou match ne donnent rien jusqu'a présent

    ma requête actuelle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT id_fiche, f_titre, f_date,f_valide,f_texte,f_liens,f_plateforme,p_nom,f_sortie_fr,c_nom,e_nom FROM iv_fiches INNER JOIN iv_plateforme ON iv_fiches.f_plateforme = iv_plateforme.id_plateforme INNER JOIN iv_categorie ON iv_fiches.f_categorie = iv_categorie.id_categorie LEFT JOIN iv_editeur ON iv_fiches.f_editeur = iv_editeur.id_editeur WHERE f_valide=\'2\' AND MATCH (f_titre,f_texte,f_titre_us,f_titre_jap) AGAINST (\''.addslashes($mcle).'\' IN BOOLEAN MODE)
    merci

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 194
    Points : 216
    Points
    216
    Par défaut
    une idée :
    UPPER() existe en sql

    pour ignorer la casse :
    le mot que tu recherches tu le colles en upercase et et tu mets en upper le champ de ton enregistrement

    et donc avec une condition
    WHERE UPPER(champ_titre) LIKE %mot_en_uppercase
    tu n'as plus besoin de t'embeter avec la casse
    (et ça doit aussi marcher dans l'autre sens en lowercase...)


    ensuite ça dépend de comment tu réutilises ton champ titre
    s'il sert juste à la recherche interdit toi les points et tirets dedans.
    (ainsi F.E.A.R. devient FEAR)
    et dans la recherche

    sur ton mot tu enlèves (en PHP) les caractères génants (avec plusieurs split et join pour enlever les points, tirets et tout ce que tu veux) avant de l'utiliser dans ta recherche

    ainsi hop tu vires les caractères qui gènent avant la requete et dans la requete tu t'arranges pour ignorer la casse (comme au dessus)
    et hop c bon.



    et si le titre doit rester tel quel, il va te falloir chercher dans les fonctions de manipulation sql comment faire pour retirer les caractères génants au niveau de ton enregistrement (mais avec google tu trouveras rapidement les fonctions de manipulations de chaines de caractères)
    mais ça risque de compliquer ta requete si tu veux supprimer beaucoup de caractères génants.




    ou alors autre idée
    tu peux aussi prendre le mot recherché, enlever les caractères génants
    et le découper lettre par lettre
    ensuite tu créés une chaine %1erelettre%2emelettre%3emelettre.... etc
    que tu utiliseras avec like
    ça devrait marcher mais ça risque aussi de sortir des résultats sans rapport

    (en cherchant toto on risque de tomber sur TOTal abOmination par exemple)
    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait.
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.


    Spidercochon, spidercochon, il peut marcher au plafond
    ...MM ......Voici Spidercochon. Aidez le à conquérir le monde
    E(....)~....en le reproduisant.
    ...w

Discussions similaires

  1. Domaine d'application de la recherche d'images par similarité de texture
    Par mobi_bil dans le forum Traitement d'images
    Réponses: 4
    Dernier message: 29/08/2009, 14h42
  2. recherche par mot clé
    Par seb59dk dans le forum Access
    Réponses: 3
    Dernier message: 06/09/2005, 14h26
  3. Recherche par mots clés
    Par legillou dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 17/06/2005, 10h56
  4. Probleme de recherche par listbox
    Par haigwepa dans le forum IHM
    Réponses: 6
    Dernier message: 12/10/2004, 19h57
  5. Moteur de recherche par date
    Par Prue dans le forum ASP
    Réponses: 17
    Dernier message: 27/08/2003, 16h07

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