Lucene solrj getCountDistinct()返回空值?
我正在尝试使用以下代码获取字段的唯一值:Lucene solrj getCountDistinct()返回空值?,lucene,solrj,Lucene,Solrj,我正在尝试使用以下代码获取字段的唯一值: 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.get
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());
getCount()给出了正确的计数。但是,stats.getCountDistinct()始终返回null。
有什么想法吗?中的getCountDistinct()
为空,因为在创建FieldStatInfo对象时没有提供它(从solr.query(query)
返回的内容)
不能保证此pojo中的任何字段都已填充
作为一种替代方法,尝试使用stats.getCardinality()
,尽管同样不能保证这是公开的。getCountDistinct()
in为空,因为在创建FieldStatInfo对象时没有提供它(从solr.query(query)
返回的内容)
不能保证此pojo中的任何字段都已填充
另一种方法是尝试使用stats.getCardinality()
,尽管同样不能保证这是正确的。找到了解决方案!
要使getCountDistinct()
返回一个值,需要添加以下内容
query.addStatsFieldCalcDistinct("popu_s", true);
找到了解决办法!
要使getCountDistinct()
返回一个值,需要添加以下内容
query.addStatsFieldCalcDistinct("popu_s", true);
谢谢
stats.getCardinality()
也返回null。那么如何让countDistinct工作呢?正如答案中提到的,它依赖于solr.query(query)
返回一个包含所有所需值的完全填充响应。这里无法回答,因为我们不知道您的数据集/查询等,因此超出了SO的范围。谢谢。我是否可以控制返回完全填充的响应的solr.query(query)
?我已经指定了我的代码query.set(“q”,“*:*”)代码>要求所有文档。查询q可以是您想要的任何内容。谢谢stats.getCardinality()
也返回null。那么如何让countDistinct工作呢?正如答案中提到的,它依赖于solr.query(query)
返回一个包含所有所需值的完全填充响应。这里无法回答,因为我们不知道您的数据集/查询等,因此超出了SO的范围。谢谢。我是否可以控制返回完全填充的响应的solr.query(query)
?我已经指定了我的代码query.set(“q”,“*:*”)代码>它要求所有文档。查询q可以是您想要的任何内容。