2016-10-25 45 views
1

我們正在嘗試創建/上傳Solr作爲受管資源的新同義詞。當我們創建多個術語同義詞時,例如「美國」或「蜘蛛俠」,我們正面臨一些問題。 Solr文檔爲單項同義詞提供了一個curl命令示例,但沒有用於多項的curl命令示例。Solr:用於添加新的多項同義詞的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"]] 

對於我們得到了三個以下錯誤:

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

回答

0

按照documentation一個例子如下

curl -X PUT -H 'Content-type:application/json' --data-binary '["funny", "entertaining", "whimiscal", "jocular"]' "http://localhost:8983/solr/techproducts/schema/analysis/synonyms/english" 

這是一樣的你的號碼2例,除正在使用POST不放。嘗試使用PUT,看看是否有幫助。

此外,

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

不是有效的,因爲你只能把字符串數組。要添加多個對稱同義詞組,您將必須爲每個陣列進行一次調用。

+0

嗨安德魯! 我們嘗試了你的兩個主張,沒有人工作。 請注意命令'curl -X POST -H「Content-type:application/json」... --data-binary「[」Euro「,」EUR「]」'運行良好! –

+0

如何嘗試使用--data而不是--data-binary? –

+0

嗨安德魯! 只有--data(而不是--data-binary),我們得到與1)和3)相同的錯誤。 –