You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Aroop (JIRA)" <ji...@apache.org> on 2017/11/03 01:57:00 UTC

[jira] [Created] (SOLR-11600) Add Constructor to SelectStream which takes StreamEvaluators as argument. Current schema forces one to enter a stream expression string only

Aroop created SOLR-11600:
----------------------------

             Summary: 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: 7.1, 6.6.1
            Reporter: Aroop
             Fix For: 7.0, 6.6.1


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-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org