Nous essayons de créer/télécharger de nouveaux synonymes à Solr en tant que ressources gérées. Nous rencontrons quelques problèmes lorsque nous créons des synonymes à plusieurs termes comme, par exemple, «États-Unis d'Amérique» ou «Spider-Man». La documentation Solr fournit un exemple de commande curl pour les synonymes à un terme, mais n'a pas d'exemple de commande curl pour plusieurs termes.Solr: commande curl pour ajouter de nouveaux synonymes à plusieurs termes
Nous avons essayé la commande suivante et quelques variantes:
1)
`curl -X POST -H "Content-type:application/json" ... --data-binary "["ARS","Argentinian Peso"]"`
2)
curl -X POST -H "Content-type:application/json" ... --data-binary '["ARS","Argentinian Peso"]'
3)
curl -X POST -H "Content-type:application/json" ... --data-binary [["ARS","Argentinian Peso"]]
Pour les trois nous avons eu la erreurs suivantes:
1)
{
"responseHeader":{
"status":500,
"QTime":2},
"error":{
"msg":"Expected ',' or ']': char=(EOF),position=16 BEFORE='[ARS,Argentinian'",
"trace":"org.noggit.JSONParser$ParseException: Expected ',' or ']': char=(EOF),position=16 BEFORE='[ARS,Argentinian'\n\tat org.noggit.JSONParser.err(JSONParser.java:356)...",
"code":500}}
curl: (3) [globbing] unmatched close brace/bracket in column 5
2)
{
"responseHeader": {
"status": 500,
"QTime": 2
},
"error": {
"msg": "Bad Request",
"trace": "Bad Request (400) - Unsupported update format java.lang.String\n\tat org.apache.solr.rest.ManagedResource.doPut(ManagedResource.java:410)...",
"code": 500
}
}
3)
{
"responseHeader": {
"status": 500,
"QTime": 2
},
"error": {
"msg": "Expected ',' or ']': char=P,position=18 BEFORE='[[ARS,Argentinian P' AFTER='eso]]'",
"trace": "org.noggit.JSONParser$ParseException: Expected ',' or ']': char=P,position=18 BEFORE='[[ARS,Argentinian P' AFTER='eso]]'\n\tat org.noggit.JSONParser.err(JSONParser.java:356)...",
"code": 500
}
}
Après nous avons essayé de les créer à partir du fichier JSON avec succès; nous avons utilisé la commande boucle suivante:
4)
curl -X POST -H "Content-type:application/json" ... --data-binary @synonyms_test.json
Le synonyms_test.json a:
["USA","United States of America"]
Après nous avons essayé d'étendre cette 'solution' parce que nous avons besoin de créer/télécharger des milliers de synonymes à une collection existante. Ensuite, nous décidons de remplir le fichier JSON avec tableau de tableaux (une teneur en JSON valide):
[["aaa", "aaa1"],["bbb", "bbb1"]]
Et le résultat était:
4)
{
"responseHeader": {
"status": 500,
"QTime": 2
},
"error": {
"msg": "java.util.ArrayList cannot be cast to java.lang.String",
"trace": "java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.String ...",
"code": 500
}
}
Avez-vous une idée résoudre cela?
Cordialement, DM
Bonjour Andrew! Nous avons essayé vos deux propositions et personne n'a travaillé. Notez que la commande 'curl -X POST -H" Type de contenu: application/json "... --data-binary" ["Euro", "EUR"] "' fonctionne bien! –
Que diriez-vous d'essayer d'utiliser --data au lieu de --data-binary? –
Salut Andrew! Avec seulement --data (au lieu de --data-binary) nous avons eu la même erreur que 1) et 3). –