动态场上的Solr聚合/刻面
表架构:动态场上的Solr聚合/刻面,solr,datastax-enterprise,datastax,Solr,Datastax Enterprise,Datastax,表架构: CREATE TABLE attributes_v1 ( profile_id bigint, attributes map<text, int>, solr_query text, PRIMARY KEY ((profile_id)) ) 我不知道如何完成以下任务(通过CQL或java使用solr) 所需的聚合/方面: a1计数:2 a1总数:2 a101计数:1 a101总和:1 a11计数:2 a11总和:4 a12322计数:1 a12322总和:
CREATE TABLE attributes_v1 (
profile_id bigint,
attributes map<text, int>,
solr_query text,
PRIMARY KEY ((profile_id))
)
我不知道如何完成以下任务(通过CQL或java使用solr)
所需的聚合/方面:
a1计数:2
a1总数:2
a101计数:1
a101总和:1
a11计数:2
a11总和:4
a12322计数:1
a12322总和:1
a2322计数:1
a2322总和:1
a10计数:2
a10总和:2
a51计数:2
a51总数:4
a5计数:1
a5总数:3
有什么想法吗
谢谢大家! 我认为您应该在地图键前面加上字段本身的名称。这是以下链接中提到的要求/限制: 因此,例如,您的“a1”元素应该被称为“attributes1”,您的“a12322”应该被称为“attributes12322” 然后在Solr模式中,定义dynamicField,如下所示:
<dynamicField name="attributes*" ... />
现在,对于您关于聚合的问题,因为除了计数之外,您还需要求和,所以我认为您应该使用needstats
而不是facet
stats=true&stats.field=attributes12322
可以指定多个stats.field参数,如:
stats=true&stats.field=attributes12322&stats.field=attributes1&stats.field=attribute51
然后,您可以从每个stats\u fields响应项的“sum”属性中检索sum,从“count”属性中检索count
编辑:
我没有立即注意到您特别要求通过CQL或Java查询Solr。我不确定“stats”是否受
stats=true&stats.field=attributes12322
stats=true&stats.field=attributes12322&stats.field=attributes1&stats.field=attribute51