1

新しいシノニムを管理対象リソースとして Solr に作成/アップロードしようとしています。たとえば、「United States of America」や「Spider Man」などの複数用語の類義語を作成するときに、いくつかの問題に直面しています。Solr のドキュメントには、単一用語シノニムの curl コマンドの例がありますが、複数用語の curl コマンドの例はありません。

次のコマンドといくつかのバリエーションを試しました。

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"]]

3 つの場合、次のエラーが発生しました。

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
  }
}

jsonファイルからそれらを作成しようとした後、成功しました。次の curl コマンドを使用しました。

4)

curl -X POST -H "Content-type:application/json" ... --data-binary @synonyms_test.json

synonyms_test.json には次のものがあります。

["USA","United States of America"]

何千ものシノニムを既存のコレクションに作成/アップロードする必要があるため、この「回避策」を拡張しようとしました。次に、json ファイルに配列の配列 (有効な json コンテンツ) を入力することにします。

[["aaa", "aaa1"],["bbb", "bbb1"]]

結果は次のとおりです。

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
  }
}

これを解決する方法はありますか?

よろしく、DM

4

2 に答える 2