Bonjour,
Je dois intégrer un système de recherche avec l'outil Elasticsearch :
http://www.noelshack.com/2016-19-1462970906-capture.png
Dans cette page, mon formulaire me permet de rechercher un utilisateur, un point de vente etc.
La requête qui permet de faire ceci (dans le repository) :
Désolé de balancer ce code barbare tel-quel.
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 public function findActiveUsersByOrganizationQuery($pos, $absent = null, $sourceId = false, $lead = false, $appointment = false, $keywords = null, $sort = array(), $enabled = false) { if (!is_array($pos)) { $pos = array($pos); } $sort = $this->checkSort($sort); $qb = $this->createQueryBuilder('u') ->where('u.organization IN(:pos)') ->leftJoin('u.organization', 'p') ->setParameter('pos', $pos); /* SELECT u FROM User u LEFT JOIN u.organization p WHERE u.organization IN(:pos) */ if ($sourceId === false) { } elseif (is_null($sourceId)) { $qb->leftJoin('u.assignedSources', 's') ->andWhere('s.id IS NULL'); } else { $qb->leftJoin('u.assignedSources', 's') ->andWhere('s.id = :source') ->setParameter('source', $sourceId); } if ($appointment) { $qb->andWhere('u.availableForAppointment = :appointment') ->setParameter('appointment', true); } if ($lead) { $qb->andWhere('u.availableForLead = :lead') ->setParameter('lead', true); } if (!is_null($absent)) { $qb->andWhere('u.absent = :absent') ->setParameter('absent', $absent); } if (!is_null($keywords)) { $qb = $this->addKeywordsSubquery($qb, $keywords); } if (!$enabled) { $qb->andWhere('u.enabled = :enabled') ->setParameter('enabled', true); } $qb->orderBy($sort['sortColumn'], $sort['sortOrder']); return $qb; } public function findActiveUsersByOrganization($pos, $absent = null, $sourceId = false, $lead = false, $appointment = false, $keywords = null, $sort = array(), $enabled = false) { return $this->findActiveUsersByOrganizationQuery($pos, $absent, $sourceId, $lead, $appointment, $keywords, $sort, $enabled)->getQuery()->getResult(); }
Au final je devrais utiliser Elasticsearch au lieu de cette requête c'est bien ça ?
Pour Elasticsearch, j'ai suivi ce tuto : http://afsy.fr/avent/2013/20-elastic...votre-Symfony2
J'ai mis en place les différents Bundle et je les ai ajoutés au Kernel.
Le problème vient lors de l’exécution de cette commande :
Dans ma console, j'ai ce message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part php app/console fos:elastica:populate
J'ai configuré mon fichier config.yml comme suit :Resetting Carvivo
Fatal error: Wrong parameters for Exception([string $exception [, long $code [, Exception $previous = NULL]]]) in C:\wamp\www\carvivocrm\vendor\ruflin\elastica\lib\Elastica\Exception\ResponseException.php on line 34
Mais je ne trouve pas la solution à mon problème, je désespère
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 fos_elastica: clients: default: { host: localhost, port: 9200 } serializer: callback_class: FOS\ElasticaBundle\Serializer\Callback serializer: serializer indexes: Carvivo: types: crm_user: mappings: last_name: ~ persistence: driver: orm model: Carvivo\CrmBundle\Entity\User finder: ~ provider: ~ listener: ~.
Merci pour vos réponses.
Partager