[SolrBundle] Intégration à un projet
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:
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:
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:
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:
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)