2015-04-03 58 views
2

我正在使用Solr-5.0.0。解析Solr响应时出错

我打算用Java查询Solr。我在这里使用group by子句。

它我的代码

SolrQuery qry = new SolrQuery(); 

qry.setQuery("product_name:(laptops)"); 
qry.addFilterQuery("brand:dell OR brand: sony OR brand:samsung"); 
qry.setParam("group", true); 
qry.setParam("group.field", "brand"); 
qry.setParam("stats", true); 
qry.setParam("stats.field", "product_price"); 
qry.setFields("brand"); 
System.out.println(qry.toString()); 

QueryRequest qryReq = new QueryRequest(qry); 
QueryResponse resp = qryReq.process(solr); 
System.out.println(resp.getResponse().toString()); 

// Here I am getting required response; 
SolrDocumentList docs = resp.getResults(); 

//Below code giving me exception null pointer 
for(int i = 0; i < docs.size(); i++) { 
    System.out.println(docs.get(i)); 
} 

但我不能够解析query.I的结果,只需要得到从查询的列表或数组

+0

@cheffe有什么帮助吗? – Juhan 2015-04-03 10:08:50

+0

您可以粘贴堆栈跟踪来查看NPE来自哪里。同时检查solr日志以查看solr为此搜索请求返回的记录数量。 – 2015-04-03 22:50:31

回答

0

我品牌和其相应的计我不熟悉你使用的SolrQuery类。

我在我的程序中使用了solr,通过创建一个URL(Solr请求)并获得如下JSon的响应。

定义请求的URL

String url = "http://"+solr_server+":"+solr_port+"/solr/collection_name/select?q="+brand+"&wt=json&indent=true"; 

从请求URL中读取Solr的JSON作为结果

JSONObject json = readJsonFromUrl(url); 

获取作出反应并随后文档 - 然后通过文档循环

JSONObject j1 = (JSONObject) json.get("response"); 
JSONArray j2 = j1.getJSONArray("docs"); 
for(int i=0;i<j2.length();i++){ 
    //do whatever you want to do 
} 

记得在你的类路径中使用来自http://www.java2s.com/Code/JarDownload/java-json/java-json.jar.zip的jar。

0

使用a link调试查询并查看查询是否构建正确。那么你可以采用java