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 :

Configurer my.ini pour ne pas exclure les mots courts dans la recherche FullText


Sujet :

Requêtes MySQL

  1. #1
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 219
    Points : 1 437
    Points
    1 437
    Par défaut Configurer my.ini pour ne pas exclure les mots courts dans la recherche FullText
    Bonjour,

    J'utilise les directives MATCH() AGAINST() dans le traitement d'une grande base de données or il semble qu'il y a une limitation sur l'indexation FULLTEXT entraînant des pertes de données pour moi car je fais une recherche sur des sigles et des raisons sociales de sociétés, les noms courts et les sigles de moins de 4 caractères sont ignorés et ne sont jamais "matchés".

    Il semble que le nombre minimum de caractères par défaut est 4:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [mysqld]
    ft_min_word_len=4
     
    [myisamchk]
    ft_min_word_len=4
    Actuellement, je travaille sous WAMP et je n'ai pas ces paramètres dans mon fichier my.ini.

    Question: par quelle valeur dois-je remplacer ce 4 pour qu'aucun mot ne soit plus ignoré? Par 2, par 1 ou par 0 ?
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  2. #2
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 219
    Points : 1 437
    Points
    1 437
    Par défaut
    Si je reformule ma question c'est: comment faire pour que la requête suivante retourne quelque chose
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT 
      dirigeants.id
      dirigeants.Nom
      MATCH(
        dirigeants.Nom
      ) AGAINST ('SAM KHI') AS nbMatch
    FROM
      dirigeants  
    WHERE
        MATCH(
          dirigeants.Nom
        ) AGAINST ('SAM KHI') > 0
      )
     ORDER BY nbMatch DESC
    Le nom 'SAM KHI' existe vraiment dans la base mais cette requête ne la trouve pas!
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Bonjour,

    Dans la doc il y a bien écrit que seuls les mots de plus de 4 lettres sont retenus par la recherche FullText :s

    • Un mot trop court est ignoré. La taille minimale pour un mot dans les recherches est de 4 lettres.
    • Les mots de la liste sont ignorés. Un mot banni est par exemple ``the'' ou ``some'', ``un'' or ``les'' en fran¸ais, qui sont considérés comme trop communs pour avoir une valeur intrinsèque. Il y a une liste de mots bannis en anglais par défaut.
    EDIT : De plus MySQL découpe la chaîne de caractères que tu veux rechercher avec le caractère 'espace' comme delimiteur, donc ta chaine est traduite par MySQL par : 'SAM' et 'KHI' qui sont deux chaines de moins de 4 lettres.

    La seule 'solution' donnée dans la doc est de modifier le paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [mysqld]
    ft_min_word_len=4
    comme tu l'a montré dans ton premier post.
    une réponse vous a permis d'avancer ?

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    As-tu pris en compte la note de la documentation?
    ft_min_word_len

    La taille minimale d'un mot à inclure dans un index FULLTEXT. Cette variable a été ajoutée en MySQL 4.0.0.

    Note : les index FULLTEXT doivent être reconstruits après chaque modification de cette variable. Utilisez REPAIR TABLE tbl_name QUICK.
    A+.

  5. #5
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    il suffit de lire la doc: ft_min_word_len

    et tu dois redémarrer le serveur et régénérer l'index
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  6. #6
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 219
    Points : 1 437
    Points
    1 437
    Par défaut
    Ça marche maintenant en changeant les paramètres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [mysqld]
    ft_min_word_len=1
     
    [myisamchk]
    ft_min_word_len=1
    J'ai déjà fait cela mais la vraie solution c'est ce que andry.aime a dit:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    REPAIR TABLE dirigeants QUICK
    qui a permis de régénérer les index! (redémarrage du serveur avant tout cela)

    Pour résoudre mes problèmes avec les mots bannis (the, some, un, les, ...), j'ai ajouté le paramètre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    [mysqld]
    port=3306
    ft_min_word_len=1
    ft_stopword_file=""
     
    [myisamchk]
    ft_min_word_len=1
    ft_stopword_file=""
    Maintenant, un nom asiatique "The SOME" est facilement retrouvé!

    Par contre, c'est dommage que le FULLTEXT ne soit supporté que par MyIsam. Il semble que l'InnoDB le supportera dans le futur proche!?
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  7. #7
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    oui c'est prévu dans la future version il me semble
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut
    Bonjour,

    Et comment faire quand on est sur un Mutu et que l'on n'a pas accès au fichier Config de MySQL ?

    Dans une autre discussion quelqu'un propose de passer par le script PHP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqli_query ($connexion, 'SET ft_min_word_len = 3');
    Mais chez moi cela ne marche pas.

    Avec SQL privé chez OVH il était possible de modifier ft_min_word_len depuis le manager mais depuis leur nouvelle architecture c'est impossible.

    Merci d'avance.

  9. #9
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    Salut,

    tu peux écraser les valeurs de certaines globales de configuration dans les scripts procéduraux, ça peut peut-être marcher pour celle-là...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut
    Merci de ta réponse mais le code indiqué ne marche pas.

    Peut-être faut-il être en connexion permanente, je n'en sais rien.

  11. #11
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    soit tu peux essayer de passer ta connexion en requête multiple au lieu de simple par défaut...

    soit tu utilises une affectation sur @@nom_globale dans une procédure stockée...
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SET @@SESSION.ft_min_word_len = 3;
    certaines globales touche la session et/ou la connexion ou l'une des deux seulement...

    Bon après vérification, hélas c'est une variable système donc tu ne peux pas la modifier hors du fichier ini... en plus , même si tu pouvais la changer, tu devrais reconstruire tous les index fulltext et modifier la liste des "mots stops" pour que ça marche...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut
    Merci de ta réponse même si elle ne m'arrange pas.

    Au passage on peut penser que la recherche en texte libre est quelquechose d'important et que c'est assez nul de la part d'OVH d'interdire de toucher à ft_min_word_len alors que c'était possible auparavant.

    Et en plus ils font ça sans prévenir.

  13. #13
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut Boteha.

    Pour ce genre de problème, il vaut mieux voir avec la hotline de chez OVH.

    Est-il possible de créer un fichier my.ini dans votre hébergement ?
    Oui, même pour du mutualisé !

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut
    Bonjour,

    Citation Envoyé par Artemus24 Voir le message
    Pour ce genre de problème, il vaut mieux voir avec la hotline de chez OVH.
    Est-il possible de créer un fichier my.ini dans votre hébergement ?
    Oui, même pour du mutualisé !
    J'ai échangé des tonnes de mails à ce sujet avec la "hotline" OVH.

    Depuis un changement d'architecture tu ne peux plus intervenir sur ft_min_word_len même avec un SQL privé.

    Ils sont passé à la valeur 4 pour tout le monde et refusent de changer pour soi-disant des raisons de sécurité.

    Pour moi il s'agit d'une grave régression de service.

  15. #15
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    Sinon pourquoi ne passes tu pas sur un vps? c'est plus performant, moins cher et tu installes et configures ce que tu veux...

    En plus, tu pourras administrer tout en ssh et sftp au lieu de truc sans cryptage... et tu as la version SSD niveau disque ainsi qu'une certaine évolutivité pour monter en puissance...
    Après ça dépend de ta capacité à administrer un serveur
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut
    Bonjour,

    Citation Envoyé par ericd69 Voir le message
    Sinon pourquoi ne passe tu pas sur un vps? c'est plus performant, moins cher et tu installes et configures ce que tu veux...
    en plus tu pourras administrer tout en ssh et sftp au lieu de truc sans cryptage...
    Je vais creuser cette piste.

    Le problème est que je ne connais rien à Appache, s'il faut paramétrer le serveur tout seul sans support d'OVH cela ne sera pas facile.

    Cela dit j'ai appelé OVH, j'ai eu un technicien qui a bien compris mon problème.
    Il doit voir s'ils peuvent changer la valeur de ft_min_word_len pour moi (c'est forcément possible).

    S'ils ne veulent pas le faire je dépose une réclamation auprès du service commercial.

    Je vous tiens au courant.

  17. #17
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    un vps (virtual personnal server) c'est un serveur virtualisé et isolé. tu as donc un pourcentage garanti de ressources (processeurs logiques, mémoire, disques) compléteme,t étanche aux autres sur le serveur physique et téléportable (en cas de panne physique, le VPS est relancé sur un autre serveur)

    un mutualisé c'est un serveur dont la configuration est subdivisée entre divers hôtes virtuels. les configurations sont aussi mutualisées et généralement très limitée pour maximaliser le nombre de vhost. ils ne feront pas de changements car baisser la taille des mots revient à augmenter la taille des index fulltext et donc la part de disque et de mémoire et la consommation de processeur que tu ne payes pas vraiment (car mutualisées)...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut
    Merci pour les infos.

    Je suis sur un Mutu mais j'ai un SQL privé, je pense que le fichier de config est personnalisable uniquement pour mes tables.

    Avant tu passais juste par le manager pour modifier ft_min_word_len et c'est depuis début juillet que c'est devenu impossible.

    Je vais me renseigner sur leur VPS.

  19. #19
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    j'ai eu ça y a des années mais c'est horriblement cher, en plus tu ne peux pas avoir de https autre que collectif (pas sur ton nom de domaine)

    un vps c'est comme un dédié mais moins cher et puissant et avec une bande passante de 100Mo/s au lieu du double au moins pour un dédié... par contre la remise en service est plus rapide pour une panne matérielle vu que c'est du virtuel...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  20. #20
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut
    Bonsoir,

    Citation Envoyé par ericd69 Voir le message
    j'ai eu ça y a des années mais c'est horriblement cher, en plus tu ne peux pas avoir de https autre que collectif (pas sur ton nom de domaine)
    C'est vrai que ce n'est pas donné.
    J'ai aussi un certificat SSL pas donné non plus et qui pose des problèmes aux vieux navigateurs.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Configuration] php.ini pour MAIL
    Par le_contact dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 9
    Dernier message: 22/12/2011, 16h47
  2. pour ne pas oublier les medocs
    Par ABN84 dans le forum La taverne du Club : Humour et divers
    Réponses: 33
    Dernier message: 28/06/2008, 14h03
  3. configurer php.ini pour fonction mail
    Par michka999 dans le forum Apache
    Réponses: 4
    Dernier message: 06/09/2006, 14h13

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