我是索尔的新手。我想使用Java连接到我的solr核心,并以XML格式返回结果。通过参考官方文档,我能够以二进制形式获得结果。以下是我的代码:
public static void main(String[] args) throws SolrServerException, IOException {
String urlString = "http://localhost:8983/solr/index1/";
SolrClient solr = new HttpSolrClient.Builder(urlString).build();
SolrQuery query = new SolrQuery();
query.setQuery("*:*");
QueryResponse response = solr.query(query);
System.out.println(response.toString());
}
我还尝试研究如何获得回应。我找到了这个链接,上面写着“如果你想得到原始的xml响应,只需选择任何java HTTP客户端,构建请求并将其发送给Solr。你将获得一个很好的XML字符串..”solr response in xml format 我编写了以下代码,但它没有给我回复
public static void main(String[] args) throws ClientProtocolException, IOException
{
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet("http://localhost:8983/solr/index1/select?q=*:*&wt=xml");
CloseableHttpResponse response1 = httpclient.execute(httpGet);
System.out.println(response1);
}
}
输出:
HttpResponseProxy{HTTP/1.1 200 OK [Content-Type: application/xml; charset=UTF-8, Transfer-Encoding: chunked] ResponseEntityProxy{[Content-Type: application/xml; charset=UTF-8,Chunked: true]}}
在官方网站https://lucene.apache.org/solr/guide/6_6/using-solrj.html上,提到使用
solr.setParser(new XMLResponseParser());
获取XML响应,但我不知道如何使用它,因为没有给出任何示例。任何帮助表示赞赏。
编辑: 正如John的评论中所提到的,我将代码修改为:
System.out.println(EntityUtils.toString(response1.getEntity()));
答案 0 :(得分:0)
没试过,但它应该有效,
您需要初始化org.apache.solr.client.solrj.SolrClient
,表示您要使用的Solr实例,如下所示。
import org.apache.solr.client.solrj.impl.XMLResponseParser;
String serverURL = "http://localhost:8983/solr/<core_name>";
SolrClient solr = new HttpSolrClient.Builder(serverURL).build();
solr.setParser(new XMLResponseParser());