You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by dp...@apache.org on 2017/06/18 15:54:53 UTC

[7/8] lucene-solr:master: SOLR-10882: Moves sub evaluator check to the constructors to catch errors earlier

SOLR-10882: Moves sub evaluator check to the constructors to catch errors earlier


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/aeec043e
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/aeec043e
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/aeec043e

Branch: refs/heads/master
Commit: aeec043ed1cdf6ffd2b92811adde162eab06debd
Parents: 113459a
Author: Dennis Gove <dp...@gmail.com>
Authored: Fri Jun 16 20:10:28 2017 -0400
Committer: Dennis Gove <dp...@gmail.com>
Committed: Sun Jun 18 11:50:58 2017 -0400

----------------------------------------------------------------------
 .../solr/client/solrj/io/eval/ConvolutionEvaluator.java   | 10 +++++-----
 .../solr/client/solrj/io/eval/CorrelationEvaluator.java   |  9 +++++----
 .../solr/client/solrj/io/eval/CovarianceEvaluator.java    |  9 +++++----
 .../solrj/io/eval/CumulativeProbabilityEvaluator.java     |  9 +++++----
 .../solr/client/solrj/io/eval/DescribeEvaluator.java      | 10 ++++++----
 .../solr/client/solrj/io/eval/DistanceEvaluator.java      | 10 ++++++----
 .../solrj/io/eval/EmpiricalDistributionEvaluator.java     |  9 +++++----
 .../solr/client/solrj/io/eval/FindDelayEvaluator.java     |  9 +++++----
 .../solr/client/solrj/io/eval/HistogramEvaluator.java     |  9 +++++----
 .../solr/client/solrj/io/eval/MovingAverageEvaluator.java |  9 +++++----
 .../solr/client/solrj/io/eval/PercentileEvaluator.java    |  9 +++++----
 .../solr/client/solrj/io/eval/PredictEvaluator.java       | 10 ++++++----
 .../apache/solr/client/solrj/io/eval/RankEvaluator.java   | 10 ++++++----
 .../solr/client/solrj/io/eval/RegressionEvaluator.java    | 10 ++++++----
 .../solr/client/solrj/io/eval/ReverseEvaluator.java       | 10 ++++++----
 .../apache/solr/client/solrj/io/eval/ScaleEvaluator.java  | 10 ++++++----
 .../solr/client/solrj/io/eval/SequenceEvaluator.java      | 10 ++++++----
 17 files changed, 93 insertions(+), 69 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aeec043e/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/ConvolutionEvaluator.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/ConvolutionEvaluator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/ConvolutionEvaluator.java
index 000fa0d..e91620e 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/ConvolutionEvaluator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/ConvolutionEvaluator.java
@@ -18,6 +18,7 @@ package org.apache.solr.client.solrj.io.eval;
 
 import java.io.IOException;
 import java.util.List;
+import java.util.Locale;
 import java.util.ArrayList;
 
 import org.apache.commons.math3.util.MathArrays;
@@ -35,15 +36,14 @@ public class ConvolutionEvaluator extends ComplexEvaluator implements Expressibl
 
   public ConvolutionEvaluator(StreamExpression expression, StreamFactory factory) throws IOException {
     super(expression, factory);
+    
+    if(2 != subEvaluators.size()){
+      throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - expecting two values but found %d",expression,subEvaluators.size()));
+    }
   }
 
   public List<Number> evaluate(Tuple tuple) throws IOException {
 
-    if(subEvaluators.size() != 2) {
-      throw new IOException("Convolution evaluator expects 2 parameters found: "+subEvaluators.size());
-    }
-
-
     StreamEvaluator colEval1 = subEvaluators.get(0);
     StreamEvaluator colEval2 = subEvaluators.get(1);
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aeec043e/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/CorrelationEvaluator.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/CorrelationEvaluator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/CorrelationEvaluator.java
index 05db16f..73c9f39 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/CorrelationEvaluator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/CorrelationEvaluator.java
@@ -18,6 +18,7 @@ package org.apache.solr.client.solrj.io.eval;
 
 import java.io.IOException;
 import java.util.List;
+import java.util.Locale;
 
 import org.apache.commons.math3.stat.correlation.PearsonsCorrelation;
 import org.apache.solr.client.solrj.io.Tuple;
@@ -34,14 +35,14 @@ public class CorrelationEvaluator extends ComplexEvaluator implements Expressibl
 
   public CorrelationEvaluator(StreamExpression expression, StreamFactory factory) throws IOException {
     super(expression, factory);
+    
+    if(2 != subEvaluators.size()){
+      throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - expecting two values but found %d",expression,subEvaluators.size()));
+    }
   }
 
   public Number evaluate(Tuple tuple) throws IOException {
 
-    if(subEvaluators.size() != 2) {
-      throw new IOException("Correlation evaluator expects 2 parameters found: "+subEvaluators.size());
-    }
-
     StreamEvaluator colEval1 = subEvaluators.get(0);
     StreamEvaluator colEval2 = subEvaluators.get(1);
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aeec043e/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/CovarianceEvaluator.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/CovarianceEvaluator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/CovarianceEvaluator.java
index 5778289..9371d78 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/CovarianceEvaluator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/CovarianceEvaluator.java
@@ -18,6 +18,7 @@ package org.apache.solr.client.solrj.io.eval;
 
 import java.io.IOException;
 import java.util.List;
+import java.util.Locale;
 
 import org.apache.commons.math3.stat.correlation.Covariance;
 import org.apache.solr.client.solrj.io.Tuple;
@@ -34,14 +35,14 @@ public class CovarianceEvaluator extends ComplexEvaluator implements Expressible
 
   public CovarianceEvaluator(StreamExpression expression, StreamFactory factory) throws IOException {
     super(expression, factory);
+    
+    if(2 != subEvaluators.size()){
+      throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - expecting two values but found %d",expression,subEvaluators.size()));
+    }
   }
 
   public Number evaluate(Tuple tuple) throws IOException {
 
-    if(subEvaluators.size() != 2) {
-      throw new IOException("Covariance evaluator expects 2 parameters found: "+subEvaluators.size());
-    }
-
     StreamEvaluator colEval1 = subEvaluators.get(0);
     StreamEvaluator colEval2 = subEvaluators.get(1);
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aeec043e/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/CumulativeProbabilityEvaluator.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/CumulativeProbabilityEvaluator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/CumulativeProbabilityEvaluator.java
index 469e983..9e2bbaf 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/CumulativeProbabilityEvaluator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/CumulativeProbabilityEvaluator.java
@@ -18,6 +18,7 @@
 package org.apache.solr.client.solrj.io.eval;
 
 import java.io.IOException;
+import java.util.Locale;
 
 import org.apache.solr.client.solrj.io.Tuple;
 import org.apache.solr.client.solrj.io.stream.expr.Explanation;
@@ -33,14 +34,14 @@ public class CumulativeProbabilityEvaluator extends ComplexEvaluator implements
 
   public CumulativeProbabilityEvaluator(StreamExpression expression, StreamFactory factory) throws IOException {
     super(expression, factory);
+    
+    if(2 != subEvaluators.size()){
+      throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - expecting two values (emperical distribution and a number) but found %d",expression,subEvaluators.size()));
+    }
   }
 
   public Number evaluate(Tuple tuple) throws IOException {
 
-    if(subEvaluators.size() != 2) {
-      throw new IOException("Cumulative probability expects 2 parameters: an emperical distribution and a number");
-    }
-
     StreamEvaluator r = subEvaluators.get(0);
     StreamEvaluator d = subEvaluators.get(1);
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aeec043e/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/DescribeEvaluator.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/DescribeEvaluator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/DescribeEvaluator.java
index 196afe5..e4c7523 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/DescribeEvaluator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/DescribeEvaluator.java
@@ -19,6 +19,7 @@ package org.apache.solr.client.solrj.io.eval;
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 
 import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics;
@@ -36,14 +37,15 @@ public class DescribeEvaluator extends ComplexEvaluator implements Expressible {
 
   public DescribeEvaluator(StreamExpression expression, StreamFactory factory) throws IOException {
     super(expression, factory);
+    
+    if(1 != subEvaluators.size()){
+      throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - expecting one column but found %d",expression,subEvaluators.size()));
+    }
+
   }
 
   public Tuple evaluate(Tuple tuple) throws IOException {
 
-    if(subEvaluators.size() != 1) {
-      throw new IOException("describe expects 1 column as a parameters");
-    }
-
     StreamEvaluator colEval = subEvaluators.get(0);
 
     List<Number> numbers = (List<Number>)colEval.evaluate(tuple);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aeec043e/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/DistanceEvaluator.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/DistanceEvaluator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/DistanceEvaluator.java
index f4ac319..12591ad 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/DistanceEvaluator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/DistanceEvaluator.java
@@ -19,6 +19,7 @@ package org.apache.solr.client.solrj.io.eval;
 
 import java.io.IOException;
 import java.util.List;
+import java.util.Locale;
 
 import org.apache.commons.math3.ml.distance.EuclideanDistance;
 import org.apache.solr.client.solrj.io.Tuple;
@@ -35,14 +36,15 @@ public class DistanceEvaluator extends ComplexEvaluator implements Expressible {
 
   public DistanceEvaluator(StreamExpression expression, StreamFactory factory) throws IOException {
     super(expression, factory);
+    
+    if(2 != subEvaluators.size()){
+      throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - expecting two values but found %d",expression,subEvaluators.size()));
+    }
+
   }
 
   public Number evaluate(Tuple tuple) throws IOException {
 
-    if(subEvaluators.size() != 2) {
-      throw new IOException("Distance evaluator expects 2 parameters found: "+subEvaluators.size());
-    }
-
     StreamEvaluator colEval1 = subEvaluators.get(0);
     StreamEvaluator colEval2 = subEvaluators.get(1);
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aeec043e/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/EmpiricalDistributionEvaluator.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/EmpiricalDistributionEvaluator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/EmpiricalDistributionEvaluator.java
index 6885352..8456b4d 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/EmpiricalDistributionEvaluator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/EmpiricalDistributionEvaluator.java
@@ -19,6 +19,7 @@ package org.apache.solr.client.solrj.io.eval;
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Arrays;
 
@@ -38,14 +39,14 @@ public class EmpiricalDistributionEvaluator extends ComplexEvaluator implements
 
   public EmpiricalDistributionEvaluator(StreamExpression expression, StreamFactory factory) throws IOException {
     super(expression, factory);
+    
+    if(1 != subEvaluators.size()){
+      throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - expecting one column but found %d",expression,subEvaluators.size()));
+    }
   }
 
   public Tuple evaluate(Tuple tuple) throws IOException {
 
-    if(subEvaluators.size() != 1) {
-      throw new IOException("Empirical dist expects 1 column as a parameters");
-    }
-
     StreamEvaluator colEval1 = subEvaluators.get(0);
 
     List<Number> numbers1 = (List<Number>)colEval1.evaluate(tuple);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aeec043e/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/FindDelayEvaluator.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/FindDelayEvaluator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/FindDelayEvaluator.java
index 0cdd153..4ffaee5 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/FindDelayEvaluator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/FindDelayEvaluator.java
@@ -19,6 +19,7 @@ package org.apache.solr.client.solrj.io.eval;
 
 import java.io.IOException;
 import java.util.List;
+import java.util.Locale;
 
 import org.apache.commons.math3.util.MathArrays;
 import org.apache.solr.client.solrj.io.Tuple;
@@ -35,14 +36,14 @@ public class FindDelayEvaluator extends ComplexEvaluator implements Expressible
 
   public FindDelayEvaluator(StreamExpression expression, StreamFactory factory) throws IOException {
     super(expression, factory);
+    
+    if(2 != subEvaluators.size()){
+      throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - expecting two values but found %d",expression,subEvaluators.size()));
+    }
   }
 
   public Number evaluate(Tuple tuple) throws IOException {
 
-    if(subEvaluators.size() != 2) {
-      throw new IOException("Finddelay evaluator expects 2 parameters found: "+subEvaluators.size());
-    }
-
     StreamEvaluator colEval1 = subEvaluators.get(0);
     StreamEvaluator colEval2 = subEvaluators.get(1);
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aeec043e/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/HistogramEvaluator.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/HistogramEvaluator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/HistogramEvaluator.java
index aa8408b..0217bae 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/HistogramEvaluator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/HistogramEvaluator.java
@@ -20,6 +20,7 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 
 import org.apache.commons.math3.random.EmpiricalDistribution;
@@ -38,14 +39,14 @@ public class HistogramEvaluator extends ComplexEvaluator implements Expressible
 
   public HistogramEvaluator(StreamExpression expression, StreamFactory factory) throws IOException {
     super(expression, factory);
+    
+    if(2 != subEvaluators.size()){
+      throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - expecting two values but found %d",expression,subEvaluators.size()));
+    }
   }
 
   public List<Map> evaluate(Tuple tuple) throws IOException {
 
-    if(subEvaluators.size() != 2) {
-      throw new IOException("Histogram evaluator expects 2 parameters found: "+subEvaluators.size());
-    }
-
     StreamEvaluator colEval1 = subEvaluators.get(0);
 
     List<Number> numbers1 = (List<Number>)colEval1.evaluate(tuple);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aeec043e/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/MovingAverageEvaluator.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/MovingAverageEvaluator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/MovingAverageEvaluator.java
index 783116e..bb4909b 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/MovingAverageEvaluator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/MovingAverageEvaluator.java
@@ -19,6 +19,7 @@ package org.apache.solr.client.solrj.io.eval;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Locale;
 
 import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics;
 import org.apache.solr.client.solrj.io.Tuple;
@@ -35,14 +36,14 @@ public class MovingAverageEvaluator extends ComplexEvaluator implements Expressi
 
   public MovingAverageEvaluator(StreamExpression expression, StreamFactory factory) throws IOException {
     super(expression, factory);
+    
+    if(2 != subEvaluators.size()){
+      throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - expecting two values but found %d",expression,subEvaluators.size()));
+    }
   }
 
   public List<Number> evaluate(Tuple tuple) throws IOException {
 
-    if(subEvaluators.size() != 2) {
-      throw new IOException("Moving average evaluator expects 2 parameters found: "+subEvaluators.size());
-    }
-
     StreamEvaluator colEval = subEvaluators.get(0);
     StreamEvaluator windowEval = subEvaluators.get(1);
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aeec043e/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/PercentileEvaluator.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/PercentileEvaluator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/PercentileEvaluator.java
index 658e66a..6a51360 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/PercentileEvaluator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/PercentileEvaluator.java
@@ -18,6 +18,7 @@
 package org.apache.solr.client.solrj.io.eval;
 
 import java.util.List;
+import java.util.Locale;
 import java.io.IOException;
 
 import org.apache.solr.client.solrj.io.Tuple;
@@ -35,13 +36,13 @@ public class PercentileEvaluator extends ComplexEvaluator implements Expressible
 
   public PercentileEvaluator(StreamExpression expression, StreamFactory factory) throws IOException {
     super(expression, factory);
+    
+    if(2 != subEvaluators.size()){
+      throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - expecting two values (array and number) but found %d",expression,subEvaluators.size()));
+    }
   }
 
   public Number evaluate(Tuple tuple) throws IOException {
-    if(subEvaluators.size() != 2) {
-      throw new IOException("Percentile expects 2 parameters: an array and a number");
-    }
-
     StreamEvaluator colEval = subEvaluators.get(0);
     List<Number> column = (List<Number>)colEval.evaluate(tuple);
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aeec043e/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/PredictEvaluator.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/PredictEvaluator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/PredictEvaluator.java
index 0d1e763..af8a7f0 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/PredictEvaluator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/PredictEvaluator.java
@@ -18,6 +18,7 @@
 package org.apache.solr.client.solrj.io.eval;
 
 import java.io.IOException;
+import java.util.Locale;
 
 import org.apache.solr.client.solrj.io.Tuple;
 import org.apache.solr.client.solrj.io.stream.expr.Explanation;
@@ -33,14 +34,15 @@ public class PredictEvaluator extends ComplexEvaluator implements Expressible {
 
   public PredictEvaluator(StreamExpression expression, StreamFactory factory) throws IOException {
     super(expression, factory);
+    
+    if(2 != subEvaluators.size()){
+      throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - expecting two values (regression result and a number) but found %d",expression,subEvaluators.size()));
+    }
+
   }
 
   public Number evaluate(Tuple tuple) throws IOException {
 
-    if(subEvaluators.size() != 2) {
-      throw new IOException("Predict expects 2 parameters: a regression result and a number");
-    }
-
     StreamEvaluator r = subEvaluators.get(0);
     StreamEvaluator d = subEvaluators.get(1);
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aeec043e/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/RankEvaluator.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/RankEvaluator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/RankEvaluator.java
index 2086c92..88a730d 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/RankEvaluator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/RankEvaluator.java
@@ -19,6 +19,7 @@ package org.apache.solr.client.solrj.io.eval;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Locale;
 
 import org.apache.commons.math3.stat.ranking.NaturalRanking;
 import org.apache.solr.client.solrj.io.Tuple;
@@ -35,14 +36,15 @@ public class RankEvaluator extends ComplexEvaluator implements Expressible {
 
   public RankEvaluator(StreamExpression expression, StreamFactory factory) throws IOException {
     super(expression, factory);
+    
+    if(1 != subEvaluators.size()){
+      throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - expecting one value but found %d",expression,subEvaluators.size()));
+    }
+
   }
 
   public List<Number> evaluate(Tuple tuple) throws IOException {
 
-    if(subEvaluators.size() != 1) {
-      throw new IOException("Rank evaluator expects 1 parameters found: "+subEvaluators.size());
-    }
-
     StreamEvaluator colEval = subEvaluators.get(0);
 
     List<Number> numbers = (List<Number>)colEval.evaluate(tuple);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aeec043e/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/RegressionEvaluator.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/RegressionEvaluator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/RegressionEvaluator.java
index 42a6955..263a69a 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/RegressionEvaluator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/RegressionEvaluator.java
@@ -19,6 +19,7 @@ package org.apache.solr.client.solrj.io.eval;
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 
 import org.apache.commons.math3.stat.regression.SimpleRegression;
@@ -36,14 +37,15 @@ public class RegressionEvaluator extends ComplexEvaluator implements Expressible
 
   public RegressionEvaluator(StreamExpression expression, StreamFactory factory) throws IOException {
     super(expression, factory);
+    
+    if(2 != subEvaluators.size()){
+      throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - expecting two columns but found %d",expression,subEvaluators.size()));
+    }
+
   }
 
   public Tuple evaluate(Tuple tuple) throws IOException {
 
-    if(subEvaluators.size() != 2) {
-      throw new IOException("Regress expects 2 columns as parameters");
-    }
-
     StreamEvaluator colEval1 = subEvaluators.get(0);
     StreamEvaluator colEval2 = subEvaluators.get(1);
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aeec043e/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/ReverseEvaluator.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/ReverseEvaluator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/ReverseEvaluator.java
index cb11c91..56e0b63 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/ReverseEvaluator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/ReverseEvaluator.java
@@ -19,6 +19,7 @@ package org.apache.solr.client.solrj.io.eval;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Locale;
 
 import org.apache.solr.client.solrj.io.Tuple;
 import org.apache.solr.client.solrj.io.stream.expr.Explanation;
@@ -34,14 +35,15 @@ public class ReverseEvaluator extends ComplexEvaluator implements Expressible {
 
   public ReverseEvaluator(StreamExpression expression, StreamFactory factory) throws IOException {
     super(expression, factory);
+    
+    if(1 != subEvaluators.size()){
+      throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - expecting one value but found %d",expression,subEvaluators.size()));
+    }
+
   }
 
   public List<Number> evaluate(Tuple tuple) throws IOException {
 
-    if(subEvaluators.size() != 1) {
-      throw new IOException("Reverse evaluator expects 1 parameters found: "+subEvaluators.size());
-    }
-
     StreamEvaluator colEval1 = subEvaluators.get(0);
 
     List<Number> numbers1 = (List<Number>)colEval1.evaluate(tuple);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aeec043e/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/ScaleEvaluator.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/ScaleEvaluator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/ScaleEvaluator.java
index f45e2c4..806e6f6 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/ScaleEvaluator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/ScaleEvaluator.java
@@ -19,6 +19,7 @@ package org.apache.solr.client.solrj.io.eval;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Locale;
 
 import org.apache.commons.math3.util.MathArrays;
 import org.apache.solr.client.solrj.io.Tuple;
@@ -35,14 +36,15 @@ public class ScaleEvaluator extends ComplexEvaluator implements Expressible {
 
   public ScaleEvaluator(StreamExpression expression, StreamFactory factory) throws IOException {
     super(expression, factory);
+    
+    if(2 != subEvaluators.size()){
+      throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - expecting two values but found %d",expression,subEvaluators.size()));
+    }
+
   }
 
   public List<Number> evaluate(Tuple tuple) throws IOException {
 
-    if(subEvaluators.size() != 2) {
-      throw new IOException("Scale evaluator expects 2 parameters found: "+subEvaluators.size());
-    }
-
     StreamEvaluator numEval = subEvaluators.get(0);
     StreamEvaluator colEval1 = subEvaluators.get(1);
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aeec043e/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/SequenceEvaluator.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/SequenceEvaluator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/SequenceEvaluator.java
index c45e551..c6db106 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/SequenceEvaluator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/SequenceEvaluator.java
@@ -19,6 +19,7 @@ package org.apache.solr.client.solrj.io.eval;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Locale;
 
 import org.apache.commons.math3.util.MathArrays;
 import org.apache.solr.client.solrj.io.Tuple;
@@ -35,14 +36,15 @@ public class SequenceEvaluator extends ComplexEvaluator implements Expressible {
 
   public SequenceEvaluator(StreamExpression expression, StreamFactory factory) throws IOException {
     super(expression, factory);
+    
+    if(3 != subEvaluators.size()){
+      throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - expecting three values but found %d",expression,subEvaluators.size()));
+    }
+
   }
 
   public List<Number> evaluate(Tuple tuple) throws IOException {
 
-    if(subEvaluators.size() != 3) {
-      throw new IOException("Sequence evaluator expects 3 parameters found: "+subEvaluators.size());
-    }
-
     StreamEvaluator sizeEval = subEvaluators.get(0);
     StreamEvaluator startEval = subEvaluators.get(1);
     StreamEvaluator strideEval = subEvaluators.get(2);