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

Requêtes MySQL Discussion :

index FULLTEXT et match exact ?


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 334
    Par défaut index FULLTEXT et match exact ?
    Bonjour,

    J'ai créé une base sous MySQL 5.0 dans laquelle j'utilise des tables InnoDB, j'utilise beaucoup les contraintes de clés étrangères.

    La base contient des séquence nucléotidiques, avec donc des motifs répétés avec les seules caractères A, T, G, C et N.

    J'ai créé une table temporaire MyISAM avec un index FULLTEXT afin de faire des comparaisons de séquences, mais ces comparaisons doivent avoir un match exact.

    Exemple :

    Si je cherche 'ATGC', je souhaite retrouver exactement l'identifiant de la séquence 'ATGC' et pas 'ATGCNATGC' et tout ce qui contient 'ATGC'.

    Mon idée est de faire une comparaison selon le motif et la taille des séquences, à moins que vous connaissiez un moyen d'avoir le match exact.

    Pourriez-vous m'éclairer là-dessus ?

    En vous remerciant,

    C. Tobini

  2. #2
    Membre éprouvé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 509
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 509
    Par défaut
    Bonjour,
    Peut être que j'ai pas très bien compris votre problème, mais vous voulez une correspondance exacte pour la séquence que vous cherchez.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM maTable WHERE sequence = 'ATGC'
    Cette requête vous retournera cette séquence exacte, vous pouvez aussi garder cette table au format InnoDb.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 334
    Par défaut
    Bonjour et merci de la réponse,

    Oui, ma question ne semble pas claire, parce que j'avais mal compris le fonctionnement de FULL TEXT

    En fait mon problème est le suivant: j'ai des chaînes de caractères très longues (jusqu'à 13 000 caractères) entre 2 tables. Je souhaite retrouver des éléments d'une des tables en comparant les chaînes de caractères, mais une indexation est impossible avec des séquences aussi longues.

    Je me suis donc intéressé à ce qu'on peut faire avec une méthode FULL TEXT, qui n'est utilisable qu'avec des tables MyISAM. Je pensais que la recherche était de type regex, ce qui n'est pas le cas. Je pensais par exemple qu'en cherchant en FULL TEXT 'HELLO' dans 'abcHELLOcdeHELLO', 'HELLO' allait être trouvé 2 fois, ce qui n'est pas le cas (il faut un séparateur).

    Quoi qu'il en soit, la limitation de taille de caractère maximum (variable ft_max_word_len) est plate-forme dépendante, et je ne peux pas comparer plus de 84 caractères avec mon OS, donc ça tombe à l'eau

    Quoi qu'il en soit vous avez raison, je devrais faire un simple WHERE mot = mot. J'ai utilisé comme biais de rajouter une colonne avec un MD5(ma_sequence) sur lequel je peux faire une comparaison tout en ayant une chaîne de caractères indexée.

    Merci encore et bonne journée,

    C. Tobini

  4. #4
    Membre confirmé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2005
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2005
    Messages : 75
    Par défaut
    Bonjour,

    Si vous utilisez la recherche full text il me semble que vous pouvez placez votre terme recherché entre guillemets double "ATGC" il vous sera alors retourné que la ou les lignes ne contenant que ce terme.

    voir ici pour les booléens de recherche http://dev.mysql.com/doc/refman/5.0/...t-boolean.html

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 334
    Par défaut
    Oui, merci de la réponse, je pensais que le comportement était de style regex, mais ce n'est pas du tout le cas

    Bonne journée,

    C. Tobini

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

Discussions similaires

  1. match against liste des indexes fulltext
    Par SpaceFrog dans le forum Requêtes
    Réponses: 6
    Dernier message: 09/02/2009, 19h56
  2. [MySQL] recherche avec ou sans index FULLTEXT ?
    Par laloupiote dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/04/2007, 17h21
  3. indexation fulltext des mots avec un trait d'union
    Par andraz dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 12/03/2007, 16h46
  4. [index fulltext] Can't create table
    Par clemsouz dans le forum Administration
    Réponses: 11
    Dernier message: 16/05/2006, 17h37
  5. Probleme d'index fulltext assez bizarre
    Par Clovis37 dans le forum Débuter
    Réponses: 4
    Dernier message: 08/07/2005, 19h59

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