You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jb...@apache.org on 2019/01/20 18:29:38 UTC

[lucene-solr] branch branch_7x updated: SOLR-13146: Allow derivatives to be computed for the oscillate Stream Evaluator

This is an automated email from the ASF dual-hosted git repository.

jbernste pushed a commit to branch branch_7x
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git


The following commit(s) were added to refs/heads/branch_7x by this push:
     new ead6de5  SOLR-13146: Allow derivatives to be computed for the oscillate Stream Evaluator
ead6de5 is described below

commit ead6de55f2b7ac72f3484dd6465893157851ee68
Author: Joel Bernstein <jb...@apache.org>
AuthorDate: Sun Jan 20 13:18:54 2019 -0500

    SOLR-13146: Allow derivatives to be computed for the oscillate Stream Evaluator
---
 .../org/apache/solr/client/solrj/io/eval/OscillateEvaluator.java  | 7 +++++--
 .../apache/solr/client/solrj/io/stream/MathExpressionTest.java    | 8 +++++++-
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/OscillateEvaluator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/OscillateEvaluator.java
index 6fdd3c5..ce6478c 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/OscillateEvaluator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/OscillateEvaluator.java
@@ -44,14 +44,17 @@ public class OscillateEvaluator extends RecursiveNumericEvaluator implements Man
 
 
     HarmonicOscillator pf = new HarmonicOscillator(amp, om, phase);
+    double[] x = new double[128];
 
     List list = new ArrayList();
     for(int i=0; i<128; i++) {
       double yvalue= pf.value(i);
       list.add(yvalue);
+      x[i] = i;
     }
 
-    return new VectorFunction(pf, list);
-
+    VectorFunction func = new VectorFunction(pf, list);
+    func.addToContext("x", x);
+    return func;
   }
 }
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/MathExpressionTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/MathExpressionTest.java
index 1e3c40b..e11c75e 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/MathExpressionTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/MathExpressionTest.java
@@ -2736,7 +2736,8 @@ public class MathExpressionTest extends SolrCloudTestCase {
         "               e=harmfit(a)," +
         "               f=getAmplitude(e)," +
         "               g=getAngularFrequency(e)," +
-        "               h=getPhase(e))";
+        "               h=getPhase(e)," +
+        "               i=derivative(a))";
     ModifiableSolrParams paramsLoc = new ModifiableSolrParams();
     paramsLoc.set("expr", cexpr);
     paramsLoc.set("qt", "/stream");
@@ -2764,6 +2765,11 @@ public class MathExpressionTest extends SolrCloudTestCase {
     assertEquals(amp.doubleValue(), 10, .1);
     assertEquals(freq.doubleValue(), .3, .1);
     assertEquals(pha.doubleValue(), 2.9, .1);
+
+    List<Number> der = (List<Number>)tuples.get(0).get("i");
+    assertEquals(der.size(), 128);
+    assertEquals(der.get(0).doubleValue(), -0.7177479876419472, 0);
+    assertEquals(der.get(127).doubleValue(), 0.47586800641412696, 0);
   }
 
   @Test