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 :

Calculer un rank avec un MATCH AGAINST


Sujet :

Requêtes MySQL

  1. #1
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut Calculer un rank avec un MATCH AGAINST
    Dans la requête réelle je calcule un niveau de correlation du résultat au moyen d'une somme de pondération de MATCH afin d'ordonner les résultats par niveau de correclation

    je me demandais pourquoi cela ne fonctionnait pas jusqu'a ce je comprenne que tous les MATCH AGAINST retournaient 0 et que par conséquent ma pondération était vaine.

    Ma question est donc pourquoi le MATCH AGAINST retourne systématiquement 0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT des1_art , MATCH('desi_art') AGAINST ('RIS') 
    FROM articles
    WHERE des1_art LIKE '%RIS%'
    Selon toute vraisemblance il devrait obligatoirement me retourne 1 au vu du LIKE, non ???

    J'ai bien un index fulltext declaré sur des1_art ...
    et la table est en MyISAM
    Qu'est ce qui pourrait engendrer ce comportement ??
    Je passe à coté d'un truc là, mais je ne vois pas ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    Bon j'avance
    en fait cela ne fonctionne que pour des chaines de longueur supérieure à 3 caractères.


    du coup mon problème se répercute sur des recherche match avec des espaces ...

    Comment échappe t'on des espaces afin de rechercher un groupe de mots car je peux avoir besoin de faire une recherche sur un format du type 'xxx x' du coup le match ne prned rien car il sépare en deux mots de 3 et 1 caractères
    or je voudrait faire la recherche sur la chaine avec l'espace
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    J'avance toujours...

    J'ai résolu le souci de ranking et du MATCH AGIANST qui ne prend pas en dessous de 4 caractères

    voici le type de requête
    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
     SELECT * FROM (SELECT id_art AS idprod,
    						art.des1_art AS desi,
    						art.desc_art AS descr,
    						art.util_art AS util,
    						cap.caption_rub AS mainrub,
    						rub.caption_rub AS subrub,
    						(des1_art LIKE  "%ris p%")  *10000 +
    						MATCH ( des1_art ) AGAINST ( "ris +p" ) *1000 +
    						MATCH ( keywords_art ) AGAINST ( "ris" ) *100 +
    						MATCH ( desc_art ) AGAINST ( "ris" ) *10 +
    						MATCH ( util_art ) AGAINST ( "ris"  ) AS Rank
    				FROM articles AS art
    				LEFT OUTER JOIN rubriques AS rub ON art.rub_art = rub.id_rub
    				LEFT OUTER JOIN rubriques AS cap ON cap.id_rub = rub.principal_rub
    				WHERE MATCH ( des1_art, desc_art, util_art, keywords_art ) AGAINST ( "ris" IN BOOLEAN MODE )
    			    OR  art.des1_art LIKE "%ris%" 
    				) T ORDER BY Rank DESC 
    				       LIMIT 50
    Je couvre le WHERE avec un like pour étendre à la chaine complète et je rajoute aussi un like * 10000 au Rank.
    En console Mysql ça marche parfaitement
    Le souci maintenant c'est que sur le site au traver de php il ne tient pas comte de l'ORDER by Rank

    j'ai 4 résultats dont les Rank sont ordonnées en console comme ceci 10000 0 0 0

    or quand je boucle en php sur mon result j'ai 0 10000 0 0
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    Bon ben quand on est un gros naze ...
    Je concaténais bien la bonne requête dans un string, mais je faisais la requête sur un autre string ...
    Désolé du dérangement !
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. recherche dans une base mysql avec match against
    Par devdebutante dans le forum Langage SQL
    Réponses: 1
    Dernier message: 02/07/2008, 14h42
  2. [MySQL] Recherche avec Match Against
    Par johann51 dans le forum PHP & Base de données
    Réponses: 25
    Dernier message: 29/02/2008, 01h01
  3. Prise en charge accents avec Match/against [BUG]
    Par numa1985 dans le forum Requêtes
    Réponses: 0
    Dernier message: 26/02/2008, 09h15
  4. [MySQL] Problème avec mysql_fetch_assoc et Match Against
    Par cysedbs dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 05/12/2007, 13h07
  5. Probleme avec "match against"
    Par biggione dans le forum Requêtes
    Réponses: 1
    Dernier message: 10/03/2007, 14h57

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