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 :

[EWZSearchBundle] Utilisation


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 8
    Par défaut [EWZSearchBundle] Utilisation
    Bonjour,

    Je souhaite mettre en place un moteur de recherche performant pour mon un site intranet contenant plus de 55 tables. J'ai choisi d'utiliser le bundle EWZSearchBundle, toute la configuration et installation à s'est bien passée. Mon problème se situe au niveau de l'usage. Je trouve que la documentation pour l'utilisation de ce bundle est très insuffisante, par conséquent je n'arrive pas à faire quelque chose de concret avec cette documentation pour le moment j'ai vu ce code dans la doc usage du bundle :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    <?php
     
    use EWZ\Bundle\SearchBundle\Lucene\LuceneSearch;
     
    // get a story
    $story = $this->getDoctrine()
            ->getRepository('AcmeBundle:Story')
            ->find($id);
     
    if (!$story) {
        throw $this->createNotFoundException('No story found for id '.$id);
    }
     
     
    // get lucene search object
    $search = $this->get('ewz_search.lucene');
     
    // add document
    $document = new Document();
    $document->addField(Field::keyword('key', $story->getId()));
    $document->addField(Field::text('title', $story->getTitle()));
    $document->addField(Field::text('url', $story->getUrl()));
    $document->addField(Field::unstored('body', $story->getDescription()));
     
    $search->addDocument($document);
    $search->updateIndex();
    J'ai plusieurs questions :
    1- $id vient d'où et pourquoi on fait une requête sans même savoir ce que l'utilisateur ? je suppose que c'est pour indexer ? car l'id ne va prendre qu'une ligne... or moi je travaille sur toute la bdd donc j'ai besoin d'indexer toutes mes tables...

    2- getId(), getTitle(), etc sont essentiellement des méthode de l'entité story ? si oui, ça revient à mon problème comment faire pour plusieurs entité à la fois ?

    3- à chaque fois on id, title, url etc moi je n'ai pas ces champs dans mes entités... faut-il les remplacer par mes champs ?

    Bref vous aurez compris que je n'ai vraiment pas compris le fonctionnement de ce bundle mais j'ai besoin de ce bundle car il est très facile à configurer je n'ai pas envie de me lancer dans des configuration horrible avec Solr+jetty...

    j'ai besoin de votre aide si quelqu'un a déjà utilisé ce bundle je souhaite qu'il donne un exemple vraiment concret pour que je puisse appliquer ça à mon cas s'il vous plait.

    Bonne journée et merci d'avance !

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2011
    Messages : 5
    Par défaut Moteur de recherche
    Bonjour shevaton7,

    Si tu cherches quelques choses de performant, je te déconseille l'implémentation de Zend Search Lucene. Sur de grosses quantités de données, ça se casse la gueule (désolé pour ce mot mais j'en ai pas trouvé d'autre lol).

    Avec Symfony2, il y une excellente implémentation d'ElasticSearch avec un bundle. Il s'appelle FOQElasticaBundle. Voici le lien ou tu pourras le trouver:
    https://github.com/Exercise/FOQElasticaBundle

    Il te suffit ensuite d'installer ElasticSearch sur ta config. Tu le trouves ici: http://www.elasticsearch.org

    La configuration d'ElasticSearch est à son plus simple. La solution de base fonctionne très bien. Ensuite, tu peux toucher à celle-ci si tu veux faire du "Tuning".

    Encore une chose, tu trouveras la derrière présentation de cela sur les slides de Symfony Live London: https://speakerdeck.com/u/jmikola/p/...-elasticsearch

    Bonne découverte.

    Bertrand

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 8
    Par défaut
    Bonjour !

    Tout d'abord merci pour ta réponse je suis actuellement en train de suivre ton conseil...

    J'ai quelques questions. en fait je ne comprends pas pourquoi tu m'as filé le deuxième lien ( http://www.elasticsearch.org ) on ne trouve déjà pas tout avec le premier lien ( https://github.com/Exercise/FOQElasticaBundle ?) j'ai eu l'impression que j'avais tout. le deuxième lien me semble un peu compliqué non ?
    Quand tu dis : "La configuration d'ElasticSearch est à son plus simple. La solution de base fonctionne très bien. Ensuite, tu peux toucher à celle-ci (le deuxième lien http://www.elasticsearch.org ?) si tu veux faire du "Tuning".

    Par ailleurs j'ai bien suivit la conf mais j'ai cette erreur : Fatal error: Class 'Elastica_Client' not found in C:\wamp\www\Symfony\vendor\bundles\FOQ\ElasticaBundle\Client.php on line 12

    est-ce qu'il faut que dans C:\wamp\www\Symfony\vendor\elastica\lib\Elastica\client.php que je renomme la classe client.php en Elastica_client.php car à l'intérieur de la dite class il y a une différence de nom entre le nom du fichier et le nom de la classe ce qui me semble bizarre non ?
    extrait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    /**
     * Client to connect the the elasticsearch server
     *
     * @category Xodoa
     * @package Elastica
     * @author Nicolas Ruflin <spam@ruflin.com>
     */
    class Elastica_Client
    {
    Merci pour ton aide !!

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 8
    Par défaut
    j'ai trouvé d'où venait mon erreur. en fait je faisais ceci :
    $loader->registerNamespace(array(
    ...
    'Elastica' => __DIR__.'/../vendor/elastica/lib',
    ));

    au lieu de ceci :
    $loader->registerPrefixes(array(
    ...
    'Elastica' => __DIR__.'/../vendor/elastica/lib',
    ));

    Maintenant nouvelle erreur : Couldnt connect to host, ElasticSearch down?

    Décidément je n'ai pas de chance avec cette histoire de moteur de recherche...

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2011
    Messages : 5
    Par défaut Server Down
    Hello,

    As-tu téléchargé ElasticSearch ?

    Si non, il faut au préalable le télécharger sur la page suivante: http://www.elasticsearch.org/download/

    si oui, il suffit d'aller dans le répertoire et de faire un ./bin/elasticsearch -f pour lancer le moteur.

    @++

    Bertrand

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 8
    Par défaut
    Bonjour

    Merci d'avoir répondu j'ai fait tout ce que tu m'as dit et maintenant tout marche. Mais j'ai besoin de bien comprendre les choses :

    Lorsque je lance elasticsearch.bat (car je suis sur windows) j'ai les lignes suivante en ligne de commande et tout à la fin j'ai le prompteur qui attend, cela signifie quoi ? que Elasticsearch est lancé et que je peux travailler ? comment cela va se passer lorsque le site sera en production ? il va falloir tjrs lancer elasticsearch ou cela se fera automatiquement ? ou alors il fonctionne comme un serveur qu'il va falloir installer dans le réseaux ?
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    C:\wamp\www\elasticsearch\bin>elasticsearch.bat
    [2012-09-20 09:43:31,047][WARN ][bootstrap                ] jvm uses the client
    vm, make sure to run `java` with the server vm for best performance by adding `-
    server` to the command line
    [2012-09-20 09:43:31,111][INFO ][node                     ] [Asylum] {0.19.9}[20
    36]: initializing ...
    [2012-09-20 09:43:31,127][INFO ][plugins                  ] [Asylum] loaded [],
    sites []
    [2012-09-20 09:43:39,546][INFO ][node                     ] [Asylum] {0.19.9}[20
    36]: initialized
    [2012-09-20 09:43:39,546][INFO ][node                     ] [Asylum] {0.19.9}[20
    36]: starting ...
    [2012-09-20 09:43:40,248][INFO ][transport                ] [Asylum] bound_addre
    ss {inet[/0.0.0.0:9300]}, publish_address {inet[/10.12.24.64:9300]}
    [2012-09-20 09:43:43,724][INFO ][cluster.service          ] [Asylum] new_master
    [Asylum][ONby3u6hRrGsZxtBfX1HPQ][inet[/10.12.24.64:9300]], reason: zen-disco-joi
    n (elected_as_master)
    [2012-09-20 09:43:43,820][INFO ][discovery                ] [Asylum] elasticsear
    ch/ONby3u6hRrGsZxtBfX1HPQ
    [2012-09-20 09:43:43,868][INFO ][http                     ] [Asylum] bound_addre
    ss {inet[/0.0.0.0:9200]}, publish_address {inet[/10.12.24.64:9200]}
    [2012-09-20 09:43:43,884][INFO ][node                     ] [Asylum] {0.19.9}[20
    36]: started
    [2012-09-20 09:43:44,075][INFO ][gateway                  ] [Asylum] recovered [
    0] indices into cluster_state
    [2012-09-20 09:46:19,516][INFO ][node                     ] [Asylum] {0.19.9}[20
    Merci pour ton aide !

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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