Bonjour,
ça fait quelques jours que je galère à intégrer le SolrBundle de Florian Semm. Après avoir bataillé pour installé l'extension php solr sous wamp, configurer Solr pour qu'il tape dans ma base de donnée MySQL (qui d'ailleurs index bien et trouve quand je recherche tous, "*:*", mais ne trouve rien dès que je recherche un mot précis, je sais pas si ça peut avoir un rapport mais je me pencherai sur ce problème plus tard) et installé et configuré le SolrBundle.
Pour info j'utilise tomcat en localhost sur le port 8080.
Mon config.yml ressemble à ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
# Solr Configuration
fs_solr:
    solr:
        hostname: localhost
        port: 8080
        path:
            collection1: /solr/collection1
    auto_index: true
    entity_manager: default
Mon url Solr :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
http://localhost:8080/solr/#/collection1
Tout d’abord je ne sais pas si le bundle créé le schema tous seul en fonction des annotations dans les entités donc pour être sur au niveau de Solr j'ai mappé mes entités autan dans la configuration de Solr (schema.xml) et dans mes entités en annotation.
Exemple :
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
58
59
60
61
62
63
64
65
66
<?php
namespace Societe\MonBundle\Entity;
 
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\ExecutionContext;
use FS\SolrBundle\Doctrine\Annotation as Solr;
 
use DateTime;
 
/**
 * Entité adresse
 * 
 * @orm\Entity(repositoryClass="Societe\MonBundle\Model\TestRepository")
 * @orm\Table(name="test")
 * 
 * @Solr\Document(repository="Societe\MonBundle\Model\TestRepository")
 * 
 */
class Test
{
    /**
     * Id
     * @orm\Id
     * @orm\generatedValue(strategy="AUTO")
     * @orm\Column(type="integer", nullable=false)
     * 
     * @Solr\Id
     */
    private $id;
 
    /**
     * Code secret d'entrée à l'adresse
     * @orm\Column(type="string", length=16, nullable=true)
     * 
     * @Solr\Field(type="string")
     * 
     * @assert\MaxLength(16)
     */
    private $test;
 
    /**
     * Constructeur
     */
    public function __construct()
    {
    }
 
    public function getId() {
        return $this->id;
    }
 
    public function setId($id) {
        $this->id = $id;
    }
 
    public function getTest() {
        return $this->test;
    }
 
    public function setTest($test) {
        $this->test = $test;
    }
 
 
}
Et quand j’exécute la commande :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
php app/console solr:synchronize "SocieteMonBundle:Test"
Il me dit 4 documents non synchronisés (4 entrées en base) mais j'ai aucune erreurs et aucuns logs donc je n'arrive pas à trouvé pourquoi il ne me les synchronises pas ?

Et j'ai un deuxième soucis, sur les ids de mes entités qui ne ce nomme pas id du coup quand je mappe "@Solr\Id" il cherche à me faire un getId qui n'existe pas, existe il une solution pour personnaliser le nom de l'id dans l'annotation du SolrBundle (pas d'exemple dans la doc)