我有以下内容:
在 Solr 中索引的 43 个文档
如果我使用 Java API 进行没有任何分组的查询,例如:
SolrQuery query = new SolrQuery("*:*");
query.setRows(10);
然后我可以获得匹配元素的总数,如下所示:
solrServer.query(query).getResults().getNumFound(); //43 in this case
该getResults()
方法返回一个SolrDocumentList
包含该值的实例。
但是,如果我使用分组,例如:
query.set("group", "true");
query.set("group.format", "simple");
query.set("group.field", "someField");
然后上面用于检索查询结果的代码没有记录器工作(抛出 NPE),我必须改用:
List<GroupCommand> groupCommands = solrServer.query(query).getGroupResponse().getValues();
List<Group> groups = groupCommand.getValues();
Group group = groups.get(groupIndex);
我不明白如何使用这部分 API 来获取匹配文档的总数(上面非分组查询中的 43 个)。首先我认为分组不再可能得到它,但我注意到如果我在 Solr 管理控制台中执行类似的查询,使用相同的分组和所有内容,它返回与 Java API 完全相同的结果和也 numFound=43
。所以很明显,即使在使用分组时,用于控制台的代码也有一些方法可以检索该值:
我的问题是,如何使用通过 Solr Java API 执行的分组来获得匹配文档的总数?