[ https://issues.apache.org/jira/browse/SOLR-11600?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Aroop updated SOLR-11600: ------------------------- Comment: was deleted (was: ok Amrit. But I think we really should take a look at providing a strongly typed option to make a Select stream with custom evaluators. It is pretty odd that we can create a complex RollupStream in a strongly typed way, but the moment we want to wrap it within a SelectStream, with some standard yet custom Evaluators, one needs to go back to constructing a string .. I was able to go make it as nice as possible, but this is sub-optimal in my opinion :) Once I have some time and I get compliance clearance from my organization, I will consider contributing to this if possible. But if possible lets do a thought experiment on this, may be we can discuss this offline and propose a solution. I am still not sure why its not easy to do. Maybe something is getting lost in translation.) > Add Constructor to SelectStream which takes StreamEvaluators as argument. > Current schema forces one to enter a stream expression string only > --------------------------------------------------------------------------------------------------------------------------------------------- > > Key: SOLR-11600 > URL: https://issues.apache.org/jira/browse/SOLR-11600 > Project: Solr > Issue Type: Improvement > Security Level: Public(Default Security Level. Issues are Public) > Components: SolrJ, streaming expressions > Affects Versions: 6.6.1, 7.1 > Reporter: Aroop > Priority: Trivial > Labels: easyfix > Attachments: SOLR-11600.patch > > > The use case is to be able able to supply stream evaluators over a rollup > stream in the following manner, but with instead with Strongly typed objects > and not steaming-expression strings. > {code:bash} > curl --data-urlencode 'expr=select( > id, > div(sum(cat1_i),sum(cat2_i)) as metric1, > coalesce(div(sum(cat1_i),if(eq(sum(cat2_i),0),null,sum(cat2_i))),0) as > metric2, > rollup( > search(col1, q=*:*, fl="id,cat1_i,cat2_i,cat_s", qt="/export", sort="cat_s > asc"), > over="cat_s",sum(cat1_i),sum(cat2_i) > ))' http://localhost:8983/solr/col1/stream > {code} > the current code base does not allow one to provide selectedEvaluators in a > constructor, so one cannot prepare their select stream via java code: > {code:java} > public class SelectStream extends TupleStream implements Expressible { > private static final long serialVersionUID = 1L; > private TupleStream stream; > private StreamContext streamContext; > private Map<String, String> selectedFields; > private Map<StreamEvaluator, String> selectedEvaluators; > private List<StreamOperation> operations; > public SelectStream(TupleStream stream, List<String> selectedFields) > throws IOException { > this.stream = stream; > this.selectedFields = new HashMap(); > Iterator var3 = selectedFields.iterator(); > while(var3.hasNext()) { > String selectedField = (String)var3.next(); > this.selectedFields.put(selectedField, selectedField); > } > this.operations = new ArrayList(); > this.selectedEvaluators = new HashMap(); > } > public SelectStream(TupleStream stream, Map<String, String> > selectedFields) throws IOException { > this.stream = stream; > this.selectedFields = selectedFields; > this.operations = new ArrayList(); > this.selectedEvaluators = new HashMap(); > } > {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org