solr基于mutilcore分组查询报空指针异常

jefyjiang 2010-05-06 05:58:18
使用solr建完索引后,使用分组查询(facet),代码如下

public Map<String, Integer> queryByGroup(String qStr, String groupField,
String sortField, boolean asc, Integer pageSize, Integer pageNum) {
Map<String, Integer> rmap = new LinkedHashMap<String, Integer>();
try {
SolrServer server = searchServerFactory.getSearchServer("");// getSolrServer()
// 方法就是返回一个CommonsHttpSolrServer
SolrQuery query = new SolrQuery();
if (qStr != null && qStr.length() > 0)
query.setQuery(qStr);
else
query.setQuery("*:*");// 如果没有查询语句,必须这么写,否则会报异常
query.setIncludeScore(false);// 是否按每组数量高低排序
query.setFacet(true);// 是否分组查询
query.setRows(0);// 设置返回结果条数,如果你时分组查询,你就设置为0
query.addFacetField(groupField);// 增加分组字段
query.setFacetSort(true);// 分组是否排序
query.setFacetLimit(pageSize);// 限制每次返回结果数
query.setSortField(sortField, asc ? SolrQuery.ORDER.asc
: SolrQuery.ORDER.desc);// 分组排序字段
query.set(FacetParams.FACET_OFFSET, (pageNum - 1) * pageSize);// 当前结果起始位置
QueryResponse rsp = server.query(query);
List<Count> countList = rsp.getFacetField(groupField).getValues();
List<Count> returnList = new ArrayList<Count>();
if (pageNum * pageSize < countList.size())
returnList = countList.subList((pageNum - 1) * pageSize,
pageNum * pageSize);
else
returnList = countList.subList((pageNum - 1) * pageSize,
countList.size() - 1);
for (Count count : returnList) {
if (count.getCount() > 0)
rmap.put(count.getName(), (int) count.getCount());
}
} catch (Exception e) {
e.printStackTrace();
}
return rmap;
}

当SolrServer指向集群的core时就会报空指针异常,但指到单独某个core时,一切正常,异常如下:
严重: java.lang.NullPointerException
at org.apache.solr.handler.component.FacetComponent.countFacets(FacetComponent.java:308)
at org.apache.solr.handler.component.FacetComponent.handleResponses(FacetComponent.java:230)
at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:290)
at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
at org.apache.solr.core.SolrCore.execute(SolrCore.java:1316)
at org.apache.solr.client.solrj.embedded.EmbeddedSolrServer.request(EmbeddedSolrServer.java:139)
at org.apache.solr.client.solrj.request.QueryRequest.process(QueryRequest.java:89)
at org.apache.solr.client.solrj.SolrServer.query(SolrServer.java:118)
at com.sendian.test.SolrSearchTest.queryByGroup(SolrSearchTest.java:40)
at com.sendian.test.SolrSearchTest.main(SolrSearchTest.java:109)
2010-5-6 17:53:34 org.apache.solr.core.SolrCore execute
信息: [core0] webapp=null path=/select params={q=*%3A*&facet=true&rows=0&facet.field=inventor&facet.sort=count&facet.limit=10&sort=inventor+asc&facet.offset=0} status=500 QTime=188
org.apache.solr.client.solrj.SolrServerException: org.apache.solr.client.solrj.SolrServerException: java.lang.NullPointerException
at org.apache.solr.client.solrj.embedded.EmbeddedSolrServer.request(EmbeddedSolrServer.java:153)
at org.apache.solr.client.solrj.request.QueryRequest.process(QueryRequest.java:89)
at org.apache.solr.client.solrj.SolrServer.query(SolrServer.java:118)
at com.sendian.test.SolrSearchTest.queryByGroup(SolrSearchTest.java:40)
at com.sendian.test.SolrSearchTest.main(SolrSearchTest.java:109)
Caused by: org.apache.solr.client.solrj.SolrServerException: java.lang.NullPointerException
at org.apache.solr.client.solrj.embedded.EmbeddedSolrServer.request(EmbeddedSolrServer.java:141)
... 4 more
Caused by: java.lang.NullPointerException
at org.apache.solr.handler.component.FacetComponent.countFacets(FacetComponent.java:308)
at org.apache.solr.handler.component.FacetComponent.handleResponses(FacetComponent.java:230)
at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:290)
at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
at org.apache.solr.core.SolrCore.execute(SolrCore.java:1316)
at org.apache.solr.client.solrj.embedded.EmbeddedSolrServer.request(EmbeddedSolrServer.java:139)
... 4 more
...全文
229 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mars_Ma_OK 2010-05-06
  • 打赏
  • 举报
回复
java.lang.NullPointerException
空指针异常哦...你最好检查然后调试一下,那段代码是空哦.你肯定是用null.someAPI();...

检查:at org.apache.solr.handler.component.FacetComponent.countFacets(FacetComponent.java:308)

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧