2015-03-27 1 views
0

Je suis nouveau à solr, et je suis confronté à un problème lorsque j'essaie de sérialiser/désérialiser une carte dans Solr.Comment sérialiser/désérialiser une carte avec Solr/Lucene?

J'utilise Solr Spring données dans mon application Java comme suit:

@Field("mapped_*") 
private Map<String, String> values; 

Il aplatissent et sérialise ma carte dans Solr comme suit:

"key1" : "value1" 
"key2" : "value2" 
... 

Cependant, quand je lance une recherche, la objets retournés ont ce champ toujours défini comme NULL. La désérialisation ne fonctionne pas sur ce champ particulier, il semble qu'elle ne reconnaisse pas key1, key2 ... comme faisant partie de la Map.

Est-ce que quelqu'un sait comment faire fonctionner la dérialisation? Dois-je implémenter un convertisseur personnalisé?

Répondre

2

À ce moment, Spring Data Solr ne préfixera pas automatiquement les valeurs contenues dans la carte avec le @Field#value donné, mais utilisera simplement le Map#key comme nom de champ. Il y a une amélioration (DATASOLR-202) ouverte.

A cette époque ayant key1, key2, .. en valeurs exige la nomchamp être key* afin de relire correctement les valeurs.

@Field("key*") 
private Map<String, String> values; 
+0

'@ Dynamic' a récemment été ajouté au printemps de données Solr - vous pouvez utiliser' @Dynamic @field ("touche *") Carte valeurs, 'qui fera la demande. La fonctionnalité fera partie de la version de Gosling - vous pouvez déjà donner un spin à l'actuel 'spring-data-solr: 1.5.0.BUILD-SNAPSHOT'. –