Wir versuchen, neue Synonyme zu Solr als verwaltete Ressourcen zu erstellen/zu laden. Wir haben einige Probleme, wenn wir synonyme Begriffe wie "United States of America" oder "Spider Man" erstellen. Die Solr-Dokumentation enthält ein Beispiel für den Befehl curl für Synonyme mit nur einem Ausdruck, hat aber kein Beispiel für den Befehl curl für Multiterm.Solr: curl-Befehl zum Hinzufügen neuer Multi-Term-Synonyme
Wir haben versucht, den folgenden Befehl ein und einige Varianten:
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"]]
Für die drei wir bekamen folgende Fehler:
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
}
}
Nachdem wir sie aus JSON-Datei mit Erfolg zu schaffen versucht; wir verwenden, um den folgenden curl Befehl:
4)
curl -X POST -H "Content-type:application/json" ... --data-binary @synonyms_test.json
Die synonyms_test.json hat:
["USA","United States of America"]
Nachdem wir diese 'Abhilfe' zu erweitern versucht, weil wir Tausende erstellen/hochladen müssen von Synonymen zu einer bestehenden Sammlung. Dann entscheiden wir die JSON-Datei mit Array von Arrays (ein gültigen json-Gehalt) zu füllen:
[["aaa", "aaa1"],["bbb", "bbb1"]]
Und das Ergebnis war:
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
}
}
Haben Sie eine Ahnung, wie um das zu lösen?
Grüße, DM
Hallo Andrew! Wir haben beide Vorschläge ausprobiert und niemand hat gearbeitet. Beachten Sie, dass der Befehl 'curl -X POST -H- Inhaltstyp: application/json" ... --data-binary "[" Euro "," EUR "]" 'läuft gut! –
Wie wäre es mit --data anstelle von --data-binary? –
Hallo Andrew! Mit nur --data (anstelle von --data-binary) haben wir den gleichen Fehler wie 1) und 3). –