2017-01-16 7 views
0

이 코드는 (200에서) 처음 10 개면 항목을 반환을 검색 얻을 :SolrJ 전체면이없는 fieldx에 대한 모든 측면

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)를 반환합니다.

답변

0

응답에서 facetField를 가져와 개수를 묻습니다. 예를 들어 :

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

는 당신이 필요 년대 FacetField code in GrepCode를 찾고 있습니다.

패싯의 총 개수를 반환하려면 제한을 -1 (무제한)로 설정할 수 있지만 사용자가 패싯에서 깊은 페이지 매기기를 수행하는 시나리오가 표시되지 않으므로 한도를 낮게 설정해야합니다.

+0

'fieldxFacets.getValueCount()'는 반환 된 패싯 번호 (이 경우에는 10)를 반환하기 때문에 작동하지 않습니다. 전체 패싯이 아닙니다. – Bruce

+0

당신은 200면을 가지고 있다는 것을 어떻게 압니까? 이 메소드가 10을 리턴하지만 100 %에서 200이라고 확신하면 한계를 설정할 가능성이 있습니다. facet.limit = -1 (무제한)을 사용하여 제한 설정을 시도하십시오. – AR1

+0

죄송합니다. 코드에서 제한 10을 설정한다는 것을 알 수 있습니다. 이것이 문제입니다. 모든 패싯을 얻으려면 -1로 설정하고 더 적은 수를 표시하려면 상한선을 설정하십시오. – AR1