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

Symfony PHP Discussion :

Symfony2 et recherche full-text [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 81
    Par défaut Symfony2 et recherche full-text
    Bonjour à tous,

    Je développe un projet de comparateur de prix avec symfony2 et j'aimerai pouvoir faire des recherche "full-text" dans mon entité Doctrine 2 qui correspond à mon catalogue de produit.

    Malheureusement j'ai vu dans la doc MySql que pour faire des requêtes avec MATCH et AGAINST je dois avoir une table MyISAM et non une Table de type InnoDB comme m'a créée doctrine avec la commande php app/console doctrine:schema:create.

    Donc 2 choses :

    Soit je dois changer dans la configuration de Doctrine 2 le fait de générer des Tables Myisam mais je ne sais pas ou c'est ?

    Soit je fais fausse route et il y a moyen avec Doctrine2 de faire le même type de recherche avec une fonction que je ne connais pas ? Il y a très peu de résultat sur le web à ce sujet... et la doc doctrine2 est assez difficile à comprendre...

    Si qqn peut m'aiguiller mieux ça serait sympa !

    Merci à tous !

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 14
    Par défaut
    Bonjour,

    Je me suis penché sur cette question cette semaine !

    Doctrine ne sait pas travailler avec des tables MyISAM, et il est impossible de créer des indexes fulltext sur une base InnoDB... sauf avec InnoDB FTS !

    Pour le moment, la seule façon que j'ai trouvé pour installer ça, c'est d'installer MySQL 5.6 (version en développement).

    Tu pourras ensuite créer UN index fulltext sur tes tables innoDB, contenant tous les champs qui doivent servir à te recherche.

    Seul gros inconvénient, pour faire un update sur une entité de ta table, il faut impérativement mettre à jour au moins l'un des champs fulltext, sans quoi tu te retrouves avec une erreur #180 InnoDB FTS Doc ID.

    J'ai pas bien compris d'où ça venait (et la doc est pas facile à trouver pour un truc pas sorti...).

    J'ai développé une extension qui permet d'effectuer une recherche fulltext sur avec doctrine : https://gist.github.com/1234419

    La requête qui va avec doit ressembler à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        public function search($address) {
            return $this->createQueryBuilder('p')
                ->addSelect('MATCH_AGAINST (p.name, p.country, p.street, p.postal, p.city, p.state, :address) as score')
                ->add('where', 'MATCH_AGAINST(p.name, p.country, p.street, p.postal, p.city, p.state, :address) > 0.8')
                ->setParameter('address', $address)
                ->orderBy('score', 'desc')
                ->setMaxResults(5)
                ->getQuery()
                ->getResult();
        }
    J'ai ajouté sur mon gist la fonction en ligne de commande que j'ai développé pour re-créer les liens fulltext (sans quoi doctrine 2 les vire à chaque update il me semble).

    Autrement, pour faire de la recherche dans une base de données, il y a Zend Lucene, que je n'ai jamais utilisé. Mais je ne pense pas qu'il puisse être plus rapide qu'une recherche fulltext !

    Espérons que MySQL 5.6 sorte en version stable rapidement !

    Bonne continuation !

    EDIT : Un début de réponse sur cette page pour le problème de DOC ID : http://blogs.innodb.com/wp/2011/07/o...th-innodb-fts/

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 81
    Par défaut
    Merci de ta réponse !

    Je viens de regarder ce que tu m'as dit mais le principal problème c'est que le site doit être en production d'ici 1 semaine et je ne pense pas que mysql sortira une version stable de la 5.6 d'ici la...

    Autre chose, en regardant l'ensemble des doc sur les tables Myisam et Innobd, je me suis rendu compte que dans la philosophie, Myisam est vraiment plus adapté à ce dont j'ai besoin...

    J'ai une table de plus de 150 000 entrés de produits et je ne fais que de la lecture a travers mon moteur de recherche (jamais de UPDATE car la base est effacée puis recréée tous les jours avec un cron)

    Je vais être obligé d'allez voir du coté Zend Lucene (j'ai trouve plusieurs Bundle Symfony2 qui permettent de l'utiliser...) en attendant que mysql nous sorte une version 5.6 !

    Je ne vois pas d'autres solutions...

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 776
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Août 2008
    Messages : 26 776
    Par défaut
    Tu peux aussi bypasser Doctrine et faire à ta manière (mais vu la deadline je crains que ça ne revienne à réécrire de grosses portions du code, ce pour quoi tu n'auras pas le temps, surtout si tu veux que ça fonctionne ).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 81
    Par défaut
    C'est une solution à laquelle j'ai pensé... Surtout que ma table ce n'est pas Doctrine qui me l'a rempli tous les jours, mais un script php avec PDO que j'ai créée à la main (pour parser les fichiers XML catalogue de mes affiliations, c'était plus simple d'avoir un fichier php simple à lancer en ligne de commande). La table est quand même un objet Doctrine2 (c'est avec Doctrine que j'ai créé ma table et c'est aussi avec Doctrine que je vais piocher dedans !)

    mais je me demande si par exemple je pourrais Bypasser Doctrine uniquement pour cette fameuse table catalogue a 150 000 entrés ? Je ne sais pas si c'est possible et si oui, comment le gérer ?

  6. #6
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 776
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Août 2008
    Messages : 26 776
    Par défaut
    Il suffit alors d'attaquer directement ta base avec PDO. Tant que cette table n'a aucun lien avec les autres tables liées à Doctrine, ça ne posera aucun problème (tu pourrais même déplacer cette table dans une autre base de données, pour éviter qu'un script de màj corrompu vienne foutre le bousin partout). Tu remplaces ton code Doctrine par du code PDO, en tenant bien compte des automatismes en moins (non, pas de méthode pour récupérer un bel objet, juste une requête).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 81
    Par défaut
    Je viens de me rendre compte que cela implique trop de changements de bypasser Doctrine par rapport à mon appli...

    Je ne sais vraiment pas quoi faire... je vais quand pas attendre après Oracle pour la sortie de Mysql 5.6 pour faire des recherche fullText dans une table InnoDb... Il me faut une solution alternative en attendant mais la je sèche un peu... Arf c'est dur la vie !

    Je vais essayer de voir un peu du coté Zend Lucene mais monter une usine à gaz pour la remplacer par InnoDb FTS dès qu'il sortira c'est pas très cool non plus...

    Sinon il me reste la solution de postuler pour un autre métier... genre pécheur ou garde forestier, c'est bien comme métier...

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 14
    Par défaut
    Si tu choisis de passer sous MySQL 5.6 (bien qu'effectivement, ce n'est pas forcément recommandé pour un serveur en production), je viens de mettre en ligne un petit guide pour mettre tout ça en place :

    http://blog.infogroom.fr/2011/10/03/...ine-symfony-2/

    En espérant que ça puisse en aider d'autres =)

  9. #9
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    ce que tu peux faire c'est une 2eme tables mais en MyISAM alimenté par un Trigger en fonction de ta table InnoDB

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 81
    Par défaut
    Merci pour ton guide Ze Big Duck ! Très sympa de partager ta recherche !

    Je le garde dans mes favoris en attendant qu'oracle veuillent bien sortir leur nouvelle version...

    Tu penses que les risques sont gros de l'utiliser pour la prod le mysql 5.6 ? Toi qui a du faire pas mal de test dessus tu as eu bcp d'erreurs (mise à par ton erreur lors de l'UPDATE qui ne me concerne pas vu que je fais uniquement de la lecture sur ma table...) ? ça me fait quand même peur de l'utiliser faire ça parce que sur leur site c'est écrit en gros de partout qu'on ne doit pas l'utiliser pour la prod... J'espère vraiment qu'ils vont se bouger...

    stealth35 ta solution me paraît une bonne alternative en attendant que ça sorte... je pense que je vais me pencher dessus si j'ai bien compris tu me préconises de faire un trigger qui remplis une autre table pour qu'ensuite je fasse mes recherches avec PDO directement dedans sans utiliser Doctrine c'est bien ça ?

    Du coté du moteur Zend lucène j'ai trouvé ce bundle qui permet d'implémenter mais bon ça me parait trop lourd à faire et pas assez pertinent !

    Merci à vous 2 pour vos réponses en tout cas !

  11. #11
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par vgross Voir le message
    stealth35 ta solution me paraît une bonne alternative en attendant que ça sorte... je pense que je vais me pencher dessus si j'ai bien compris tu me préconises de faire un trigger qui remplis une autre table pour qu'ensuite je fasse mes recherches avec PDO directement dedans sans utiliser Doctrine c'est bien ça ?
    ça te permettra de faire MATCH avec Doctrine, puisque la table sera en MyISAM

  12. #12
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 81
    Par défaut
    Le problème c'est que Doctrine 2 ne gère pas du tout ce type de table... je ne vois pas comment je peux utiliser Doctrine 2 pour faire des MATCH dans cette table si je n'ai pas d'entité Doctrine 2 associé à cette table... Doctrine 2 ne permet pas de générer des table MyISAM... Du coup mis à part attaquer cette table avec PDO je ne vois pas comment faire...

    Tu le voyais autrement ?

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 14
    Par défaut
    Personnellement, je n'ai eu aucun autre désagrément avec MySQL 5.6, mais je t'avouerais que j'hésiterais tout de même à le mettre sur un serveur en production. Effectivement, je pense qu'il serait préférable d'opter pour la solution de stealth35 en attendant la sortie officielle de MySQL 5.6.

    D'autant plus que tu ne fais pas d'insert ou d'update sur ta base de données, c'est très léger à mettre en place.

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 14
    Par défaut
    Citation Envoyé par vgross Voir le message
    Le problème c'est que Doctrine 2 ne gère pas du tout ce type de table... je ne vois pas comment je peux utiliser Doctrine 2 pour faire des MATCH dans cette table si je n'ai pas d'entité Doctrine 2 associé à cette table... Doctrine 2 ne permet pas de générer des table MyISAM... Du coup mis à part attaquer cette table avec PDO je ne vois pas comment faire...

    Tu le voyais autrement ?
    Hm... je dirais qu'il faut une entity copie de celle innoDB, mais sans les relations, tu pourras ainsi la passer en MyISAM et utiliser mes quelques bouts de code dessus, tu récupères les id, qui sont les mêmes que dans ta table innoDB, et ainsi tu récupères tes objets. Par contre je sais pas comment doctrine gère les jointures pas officielles...

  15. #15
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 81
    Par défaut
    Bon alors voila ou j'en suis (ça marche toujours pas mais j'approche du but) :

    J'ai créé le même objet "catalogue" sans les références aux autre objet. (au lieu de la clé étrangère j'ai juste fait un integer contenant l'id de l'objet auquel mon entrée se réfère).

    J'ai généré ma table avec doctrine et je l'ai ensuite passé en MyISAM.

    Ensuite j'ai crée un script PHP (qui se lance tous les jours) qui :
    -efface la totalité de la table ainsi que l'index FULLTEXT (pour l'insertion de donnée c'est plus rapide sans l'index).
    -rempli la table avec mes flux XML (catalogue d'affiliation mise à jour quotidiennement)
    -recréé l'index FULLTEXT sur la table

    Ensuite j'ai rajouté le fichier config.yml et l’extension doctrine comme indiqué sur ton blog (vu que je crée l'index dans mon script PHP, j'ai pas besoin d'utiliser ta commande php app/console xxx:build-fulltext)

    J'utilise ensuite ça dans mon Repository :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $liste = $this->createQueryBuilder('p')
    		->addSelect("MATCH_AGAINST (p.titre, p.cat, p.lieu, p.ville, :req 'IN NATURAL MODE') as score")
    		->add('where', 'MATCH_AGAINST(p.titre, p.cat, p.lieu, p.ville, :req) > 0.8')
    		->setParameter('req', $req)
    		->orderBy('score', 'desc')
    		->setMaxResults(100)
    		->getQuery()
    		->getResult();
    Et la problème je me retrouve avec une erreur 500 et Symfony me dit ce message :
    [Syntax Error] line 0, col 10: Error: Expected known function, got 'MATCH_AGAINST'
    500 Internal Server Error - QueryException
    Une idée d'ou ça vient ?

    Autre question : A quoi correspond le 0.8 ? j'ai lu la doc mysql sur full-text entièrement et je ne vois pas à quoi ce 0.8 correspond ?

  16. #16
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 81
    Par défaut
    De ce que j'ai compris, c'est mon fichier config.yml du Bundle qui n'est pas pris en compte...

    Si, du coup je rajoute directement le bout de code dans le fichier config.yml du dossier app comme ceci (comme indiqué dans le cookbook du site de Symfony 2) :
    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
    doctrine:
        dbal:
            driver:   %database_driver%
            host:     %database_host%
            port:     %database_port%
            dbname:   %database_name%
            user:     %database_user%
            password: %database_password%
            charset:  UTF8
     
        orm:
            auto_generate_proxy_classes: %kernel.debug%
            auto_mapping: true
            entity_managers:
                default:
                    dql:
                        string_functions:
                            MATCH_AGAINST: maprog\EventBundle\Extension\Doctrine\MatchAgainst
    , je me retrouve d'un coup avec cette erreur :

    Whoops, looks like something went wrong.
    1/1 InvalidConfigurationException: Unrecognized options "auto_mapping" under "doctrine.orm"

    Bref, je pense qu'il faut que j'indique qq part à Symfony qu'il doit prendre en compte mon fichier config.yml contenu dans mon Bundle dans le répertoire config mais je ne sais pas ou ? et la meme je ne sais pas si ça marchera

    donc voila je sèche un peu la... :-/

  17. #17
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 81
    Par défaut
    Bon après quelques cheveux en moins, je viens de trouver une solution qui marche...

    Vu que je n'ai pas réussi à faire prendre en compte mon fichier yml du Bundle j'ai finalement tout mis dans le fichier config.yml du répertoire app/config

    Vu que l'auto-mapping me générait une erreur (voir message précédent) j'ai viré la ligne "auto_mapping: true" pour la remplacer par un mapping de mon bundle "à la main" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        orm:
            entity_managers:
                default:
                    mappings: 
                        maprogEventBundle: ~            
                    dql:
                        string_functions:
                            MATCH_AGAINST: maprog\EventBundle\Extension\Doctrine\MatchAgainst    
            auto_generate_proxy_classes: %kernel.debug%
            #auto_mapping: true
    Comme ça, tout fonctionne et j'ai pas eu d'erreur...

    Ensuite, je ne sais pas pourquoi quand j'utilisais ta fonction MATCH_AGAINST, le classement par pertinence été totalement erroné !

    Pour avoir le résultat que j'attendais il a fallut que je vire l'alias "score" dans la requete ainsi que le classement par cet alias (logique).

    Voici le code final :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    		$liste = $this->createQueryBuilder('p')
    		->addSelect("MATCH_AGAINST(p.titre, p.ville, p.lieu, p.cp, p.cat, :req 'IN NATURAL MODE')")
    		->add('where', 'MATCH_AGAINST(p.titre, p.ville, p.lieu, p.cp, p.cat, :req ) > 1')
    		->setParameter('req', $req)
    		->setMaxResults('100')
    		->getQuery()
    		->getResult();
    Voila je ne sais pas si j'ai bien fait de faire tout ça mais maintenant tout fonctionne comme je le veux !

    J'espère que ça servira un jour à qqn !

    Merci en tout cas de vos aides !

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 14
    Par défaut
    Salut vgross, désolé, j'avais oublier de checker ce topic ces derniers temps !

    Pour charger l'extension doctrine sans faire foirer la ligne auto-mapping (j'ai eu ce problème aussi), j'ai dû mettre les lignes de configuration dans mon bundle à moi, là, ça fonctionne !

    Pour ce qui est de la fonction Match Against, j'avoue ne pas avoir lu la doc depuis un long moment, mais je suis tout de même surpris par ton "> 1" !

    Selon moi, la fonction MATCH_AGAINST retourne un float entre 0 et 1, 0 pour un résultat bidon, et 1 pour le top du top ! D'après mes acquis, tu devrais donc n'avoir aucun résultat en cherchant les correspondances "> 1" !

    Enfin, le "score" permet de récupérer la valeur de la pertinence en dehors de la requête (il te fait un array(objet, score) en guise de résultat). Mais je t'avouerais que pour le moment, ma base de données est quasiment vide et je n'ai pas vraiment prêté attention au classement, qui fonctionne pourtant comme ça d'après mes expériences passées...

    Et donc de cette façon, tu obtiens un résultat ordonné ? sans mettre aucun order by ?

  19. #19
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 81
    Par défaut
    Je pensais que tu m'avais abandonné merci de ta réponse !

    Oui après l'étude la doc mysql sur le site d'oracle j'ai compris à quoi le ">1" correspondait et désolé de cette question de noob !

    En fait sans faire de "order by" ça m'a retourné la réponse naturellement ordonnée comme je le souhaitais ! mais attention, d'après la doc, le résultat de MATCH peut être supérieur a un regarde cet exemple !

    Par contre, je n'ai toujours pas compris comment faire prendre en compte mon fichier config.yml dans le bundle.. as tu une réponse à m'apporter par rapport à ça ? je trouve plus propre de surcharger la config par le bundle que de changer directement le fichier de app/config !

    A part ça je vais sortir mon projet en mode "beta" pour justifier ce sale code et comprendre l'impact sur le mode "prod" ! je n'ai pas le choix...

    l'avantage de passer ma table en myisam à été évidement de pouvoir créer plusieurs index fulltext et c'est pas négligeable sur un projet comme le mien !

    Il me tarde de pouvoir faire ça avec mes tables Innodb ! :-)

  20. #20
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 14
    Par défaut
    Salut vgross !

    À insérer dans ton app/config.yml :

    imports:
    - { resource: "@xxxYyyBundle/Resources/config/config.yml" }

    Et là, tu ne devrais plus avoir de problème avec l'auto_mapping !

    Pour ce qui est du score > 1, c'est assez étrange, je n'ai pas bien compris la différence entre la requête d'avant sur la page que tu me montres, et sur la requête qui renvoie des résultats > 1. Je verrai à l'usage comment ajuster mon score pour optimiser les résultats !

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

Discussions similaires

  1. Recherche Full Text
    Par fadeninev dans le forum SQLite
    Réponses: 1
    Dernier message: 20/10/2006, 11h21
  2. [recherche FULL TEXT ]
    Par viny dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 20/09/2006, 18h08
  3. [MySQL] Recherche FULL TEXT IN BOOLEAN MODE et les Quotes
    Par GarGamel55 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 23/01/2006, 21h01
  4. [Info]moteur de recherche full text en environnement j2ee
    Par ddams dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 03/11/2004, 20h39
  5. Recherche FULL Text existe que dans MySql ?
    Par seb.49 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 01/06/2004, 23h30

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