SolrJ获取所有面,而不检索所有面

SolrJ获取所有面,而不检索所有面,solr,solrj,facet,Solr,Solrj,Facet,此代码返回fieldx的前10个方面项(大约200个方面项中的前10个): query.setQuery("*:*"); query.setFacet(true); query.addFacetField("fieldx"); query.setFacetLimit(10); QueryResponse resp = solr.query(query); System.out.println("tot="+resp.getResults().get

此代码返回fieldx的前10个方面项(大约200个方面项中的前10个):

    query.setQuery("*:*");
    query.setFacet(true);
    query.addFacetField("fieldx");
    query.setFacetLimit(10);
    QueryResponse resp = solr.query(query);
    System.out.println("tot="+resp.getResults().getNumFound());

我需要获得facets项目的总数(本例中为200),以便对facet集进行分页
resp.getResults().getNumFound()
返回文档总数(31000000),而不是facet项的总数。

您需要从响应中获取facet字段,然后请求计数。例如:

FacetField fieldxFacets = solrResponse.getFacetField("fieldx");
int countFacets = fieldxFacets.getValueCount();
看看你需要的是什么


为了返回facet的总数,您可以将限制设置为-1(无限),但是您应该设置一个较低的限制,因为我没有看到用户对facet进行深度分页的情况。

您需要从响应中获取facet字段,然后请求计数。例如:

FacetField fieldxFacets = solrResponse.getFacetField("fieldx");
int countFacets = fieldxFacets.getValueCount();
看看你需要的是什么


为了返回facet的总数,您可以将限制设置为-1(无限),但是您应该设置一个较低的限制,因为我没有看到用户对facet进行深度分页的情况。

这不起作用,因为
fieldxFacets.getValueCount()
返回的facet数(在本例中为10),不是全部面。你怎么知道你有200个面?如果该方法仅返回10,但您100%确定它们是200,则有可能您正在设置限制。尝试使用facet设置限制。limit=-1(unlimited)对不起,我可以在代码中看到您将facets限制设置为10,这是您的问题。如果您想获得所有方面,请将其设置为-1;如果您想显示较少方面,请将其设置为上限。这就是问题所在。我需要知道所有方面,而不是检索所有方面。我正在做一个分面分页。在本例中,面总数为200。下一个可能是20000。如果我知道总的facet,那么我可以一次分页20个文档(使用facet.offset),正如我在前面的评论中所说的,您可以将限制设置为-1,然后使用get value count。这将解决您的问题,但是如果您设置一个下限,因为我没有看到用户对facet进行深度分页的情况。这不起作用,因为
fieldxFacets.getValueCount()
返回返回的facet编号(在本例中为10),而不是总facet。您如何知道您有200个facet?如果该方法仅返回10,但您100%确定它们是200,则有可能您正在设置限制。尝试使用facet设置限制。limit=-1(unlimited)对不起,我可以在代码中看到您将facets限制设置为10,这是您的问题。如果您想获得所有方面,请将其设置为-1;如果您想显示较少方面,请将其设置为上限。这就是问题所在。我需要知道所有方面,而不是检索所有方面。我正在做一个分面分页。在本例中,面总数为200。下一个可能是20000。如果我知道总的facet,那么我可以一次分页20个文档(使用facet.offset),正如我在前面的评论中所说的,您可以将限制设置为-1,然后使用get value count。这将解决您的问题,但是,如果您应该设置一个较低的限制,因为我没有看到用户对方面进行深度分页的场景。