Ajouter un champ à plusieurs valeurs à un SolrInputDocument
Nous sommes à l'aide d'un solr fixées à l'instance de Java SolrJ.
Je veux ajouter un champ à plusieurs valeurs à un document. Le champ à plusieurs valeurs est un coma separated Chaîne.
En Java je veux faire:
solrInputDocument.addField(Field1, "value1,value2,value3");
La définition de Champ1 dans le schéma est le suivant
<field name="Field1" type="multiValuedField" indexed="true" stored="true" multiValued="true" required="false"/>
<fieldType name="multiValuedField" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.ClassicTokenizerFactory"/>
</analyzer>
</fieldType>
Avec cette configuration, nous attendions que lorsque nous invoquons le addField méthode Solr a été en mesure de vérifier que c'est un multiValuedField et il convertit la Chaîne de caractères en une liste de tableaux avec des valeurs différentes.
Au lieu de cela, nous obtenons une liste de tableaux avec juste une seule valeur qui est en fait la chaîne d'origine ajoutés au document.
Question: doit être le tokenizer en prenant soin de cela, ou devrions-nous le faire nous-mêmes quand nous ajoutons à valeurs multiples champs dans le document?
Grâce.
OriginalL'auteur Sal81 | 2014-01-29
Vous devez vous connecter pour publier un commentaire.
La addField méthode de SolrInputDocument accepte une chaîne et d'un objet. Donc, pour gérer les valeurs multiples domaines, vous pouvez passer dans une liste de tableaux avec les valeurs souhaitées pour le deuxième paramètre, et SolrJ va mettre à jour le champ à plusieurs valeurs en conséquence:
OriginalL'auteur benjammin
Vous pouvez appeler
SolrInputDocument.addField(String name, Object valeur)
plusieurs fois en passant unObject
que la valeur ou un seul temps qui passe, unCollection
en tant que valeur.Exemple #1:
Exemple #2:
Ces deux exemples, entraîne la même chose. Vous pouvez même mélanger et assortir les appels si vous avez besoin de. Pour voir pourquoi cela fonctionne, trace les appels dans le Solr code source et vous y trouverez les valeurs multiples des cas sont traités dans
SolrInputField.addValue(Object v, float b)
.OriginalL'auteur jstricker
Que je ne suis pas à l'aide de SOLRJ pour ajouter des éléments à SOLR je ne suis pas vraiment sûr, mais je pense que vous devriez avoir utilisé
OriginalL'auteur Jerome Diaz
Confirmé. Des générateurs de jetons n'est pas de "fonte" les données pour vous. Ainsi, l'approche consiste à travailler sur les données pendant le temps de chargement, pour l'avoir dans le bon format.
Thnks pour votre aide.
OriginalL'auteur Sal81