我正在编写一个 Solr 自定义分析器,以将字段的值发布到 Apache Stanbol,以便在索引阶段进行增强。
在我的自定义分析器的 incrementToken() 方法中,我有以下代码。我正在使用 Jersey REST 客户端将令牌的值发布到 Stanbol 增强器端点。运行分析器时,我总是收到HTTP 500错误响应,而不是预期的增强结果。
但是在 Java 应用程序的 main 方法中执行时,相同的 REST 客户端逻辑可以工作。
有人可以帮我确定问题出在哪里吗?会不会是 Java 权限问题,在 Solr 分析器中调用 Web 端点?
public boolean incrementToken() throws IOException {
if (!input.incrementToken()) {
return false;
}
char[] buffer = charTermAttr.buffer();
String content = new String(buffer);
Client client = Client.create();
WebResource webResource = client.resource("http://localhost:8080/enhancer");
ClientResponse response = webResource.type("text/plain").accept(new MediaType("application", "rdf+xml")).post(ClientResponse.class, content);
int status = response.getStatus();
if (status != 200 && status != 201 && status != 202) {
throw new RuntimeException("Failed : HTTP error code : "
+ response.getStatus());
}
String output = response.getEntity(String.class);
System.out.println(output);
charTermAttr.setEmpty();
char[] newBuffer = output.toCharArray();
charTermAttr.copyBuffer(newBuffer, 0, newBuffer.length);
return true;
}