2017-01-16 6 views
0

にこのコードを取得し得るfieldxするための第1の10件のファセットアイテム(約200のうち)を返します:私は、この場合には、ファセットアイテム(200の合計数を取得する必要がありますSolrJは、全ファセットはせずにすべての面

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

)私はファセットセットのページ設定を行うことができます。 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