2016-10-11 53 views
1

我想獲得的代碼字段的唯一值:solrj getCountDistinct()返回null?

query.set("q","*:*"); 
query.setGetFieldStatistics(true); 
query.setGetFieldStatistics("popu_s"); 

QueryResponse rsp = solr.query(query); 

FieldStatsInfo stats = rsp.getFieldStatsInfo().get("popu_s"); 
System.out.println(stats.getCount()); 
System.out.println(stats.getCountDistinct()); 

stats.getCount()給出正確的計數。但是,stats.getCountDistinct()始終返回null。 有什麼想法?

回答

0

找到解決方案! 爲了使getCountDistinct()返回一個值,需要添加此

query.addStatsFieldCalcDistinct("popu_s", true); 
0

getCountDistinct() in FieldStatsInfo爲空,因爲在創建FieldStatsInfo對象時(從solr.query(query)返回的內容)它沒有提供。

無法保證此pojo中的任何字段都已填充。

作爲替代嘗試使用stats.getCardinality()雖然再次不能保證這是poulated。

+0

感謝。 'stats.getCardinality()'也返回null。那麼如何讓countDistinct工作? – Bruce

+0

正如答案中所提到的,它依賴於'solr.query(query)'返回一個完全填充的響應和你需要的所有值。這在這裏不能回答,因爲我們不知道你的數據集/查詢等,並且它超出了SO的範圍。 – UserF40

+0

謝謝。我是否可以控制'solr.query(query)返回一個完全填充的響應'?我的代碼我已經指定'query.set(「q」,「*:*」);'這是要求所有文件。 – Bruce