1

我们正在尝试将新的同义词创建/上传到 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

4

2 回答 2

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"
于 2020-01-14T07:12:37.160 回答
0

根据文档,示例如下

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。尝试使用 PUT 看看是否有帮助。

还,

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

无效,因为您只能 PUT 一个字符串数组。要添加多个对称同义词组,您必须对每个数组进行一次调用。

于 2016-10-25T16:16:45.190 回答