SolrJ获得总面,而无需检索所有方面

时间:2017-01-16 22:01:08

标签: solr solrj facet

此代码返回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项的总数。

1 个答案:

答案 0 :(得分:0)

您需要从响应中获取facetField,然后询问计数。例如:

FacetField fieldxFacets = solrResponse.getFacetField("fieldx");
int countFacets = fieldxFacets.getValueCount();

查看FacetField code in GrepCode这就是你需要的东西。

为了返回构面的总数,您可以将限制设置为-1(无限制),但是您应该设置下限,因为我没有看到用户在构面上进行深度分页的情况。