我们正在尝试创建/上传新的同义词到Solr作为托管资源。当我们创建多项同义词时,我们面临一些问题,例如“美国”或“蜘蛛侠”。 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"]]
对于这三个我们得到以下错误:
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 :(得分: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"
除了使用POST而不是PUT之外,这与您的第2个示例相同。尝试使用PUT,看看是否有帮助。
此外,
[["aaa", "aaa1"],["bbb", "bbb1"]]
无效,因为您只能输入一个字符串数组。要添加多个对称同义词组,您必须为每个数组执行一次调用。
答案 1 :(得分:0)
在下面运行命令将添加停用词。
curl -X PUT -H 'Content-type:application/json' --data-binary \
'{"class":"org.apache.solr.rest.schema.analysis.ManagedWordSetResource"}' \
"http://localhost:8983/solr/techproducts/schema/analysis/stopwords/english"