此代码返回fieldx的前10个方面项目(大约200个):
query.setQuery("*:*");
query.setFacet(true);
query.addFacetField("fieldx");
query.setFacetLimit(10);
QueryResponse resp = solr.query(query);
System.out.println("tot="+resp.getResults().getNumFound());
我需要获得构面项目的总数(在这种情况下为200),以便我可以对构面集进行分页。 resp.getResults().getNumFound()
返回文档总数(31,000,000),而不是facet项的总数。
答案 0 :(得分:0)
您需要从响应中获取facetField,然后询问计数。例如:
FacetField fieldxFacets = solrResponse.getFacetField("fieldx");
int countFacets = fieldxFacets.getValueCount();
查看FacetField code in GrepCode这就是你需要的东西。
为了返回构面的总数,您可以将限制设置为-1(无限制),但是您应该设置下限,因为我没有看到用户在构面上进行深度分页的情况。