[ 
https://issues.apache.org/jira/browse/SOLR-6349?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14091534#comment-14091534
 ] 

Hoss Man commented on SOLR-6349:
--------------------------------


Proposed implementation...

* Change StatsValuesFactory.createStatsValues (and the constructors for the 
various StatsValues impls) to take in the local params from the {{stats.field}}
* each StatsValue impl should validate the stat params it's asked to compute 
* all stats should default to disabled, but we need a special backcompat case 
that if *no* stats are specified in local param, all current default stats are 
computed
** we can't be lazy and just check 0==localparams.size() - need to check the 
actuals stats params because of local params like "ex" and "key"
* for the distributed logic where things get a bit more complex (ie: distrib 
mean needs sum+count from all shards; distrib stddev needs 
sum+count+sumOfSquares from each shard) we can go two possible routes:
** A) StatsValue needs a new method to be *asked* by StatsComponent what local 
params it needs when sending shard requests
*** in this case the localparams of the shard requests have diff localparams 
and the processing of those shard stats requests can be ignorant of the fact 
that they are distributed
** B) StatsValue (via the factory method) needs to be informed when it's 
computing stats for an "isShard" request, so it can internally decide what 
per-shard values to return based on the input
*** in this case, the localparams are not modified per shard, but since 
"isShard=true" the StatsValue may return diff metrics then the ones requested 
so that the coordinator gets what it needs to aggregate.
** I think i'm leaning towards option "B" - particularly because it simplifies 
the idea of how to deal with situations like "percentiles" where the per-shard 
info isn't really a stat that should have it's own localparma folks migth ask 
for.
* deprecate {{stats.calcdistinct}} but use it as a default for the new 
corresponding localparam(s)

> LocalParams for enabling/disabling individual stats
> ---------------------------------------------------
>
>                 Key: SOLR-6349
>                 URL: https://issues.apache.org/jira/browse/SOLR-6349
>             Project: Solr
>          Issue Type: Sub-task
>            Reporter: Hoss Man
>
> Stats component currently computes all stats (except for one) every time 
> because they are relatively cheap, and in some cases dependent on eachother 
> for distrib computation -- but if we start layering stats on other things it 
> becomes unnecessarily expensive to compute all the stats when they just want 
> the "sum" (and it will definitely become excessively verbose in the 
> responses).  
> The plan here is to use local params to make this configurable.  All of the 
> existing stat options could be modeled as a simple boolean param, but future 
> params (like percentiles) might take in a more complex param value...
> Example:
> {noformat}
> stats.field={!min=true max=true percentiles='99,99.999'}price
> stats.field={!mean=true}weight
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to