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 2018/04/10 01:41:35 UTC

[1/2] lucene-solr:master: SOLR-12198: Stream Evaluators should not copy matrices needlessly

Repository: lucene-solr
Updated Branches:
  refs/heads/master 1cd859713 -> 1d8c58eb6


SOLR-12198: Stream Evaluators should not copy matrices needlessly


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

Branch: refs/heads/master
Commit: 0e4605cc45a5aeada284cdc319b465231220b916
Parents: 1cd8597
Author: Joel Bernstein <jb...@apache.org>
Authored: Mon Apr 9 21:21:46 2018 -0400
Committer: Joel Bernstein <jb...@apache.org>
Committed: Mon Apr 9 21:24:55 2018 -0400

----------------------------------------------------------------------
 .../client/solrj/io/eval/CorrelationEvaluator.java   |  2 +-
 .../solr/client/solrj/io/eval/DistanceEvaluator.java |  6 +++---
 .../solr/client/solrj/io/eval/EBEAddEvaluator.java   |  8 ++++----
 .../client/solrj/io/eval/EBESubtractEvaluator.java   |  8 ++++----
 .../solrj/io/eval/MatrixMultiplyEvaluator.java       | 14 +++++++-------
 .../client/solrj/io/eval/SumColumnsEvaluator.java    | 15 ++++++---------
 .../client/solrj/io/eval/TransposeEvaluator.java     |  4 ++--
 7 files changed, 27 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0e4605cc/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 866c5d0..ac6f2e2 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
@@ -118,7 +118,7 @@ public class CorrelationEvaluator extends RecursiveObjectEvaluator implements Ma
           realMatrix.setAttribute("corr", kendallsCorrelation);
           return realMatrix;
         } else if (type.equals(CorrelationType.spearmans)) {
-          SpearmansCorrelation spearmansCorrelation = new SpearmansCorrelation(new Array2DRowRealMatrix(data));
+          SpearmansCorrelation spearmansCorrelation = new SpearmansCorrelation(new Array2DRowRealMatrix(data, false));
           RealMatrix corrMatrix = spearmansCorrelation.getCorrelationMatrix();
           double[][] corrMatrixData = corrMatrix.getData();
           Matrix realMatrix =  new Matrix(corrMatrixData);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0e4605cc/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 e82fc4c..3f4d4d1 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
@@ -136,9 +136,9 @@ public class DistanceEvaluator extends RecursiveObjectEvaluator implements ManyV
 
   private Matrix distance(DistanceMeasure distanceMeasure, Matrix matrix) {
     double[][] data = matrix.getData();
-    RealMatrix realMatrix = new Array2DRowRealMatrix(data);
-    realMatrix = realMatrix.transpose();
-    data = realMatrix.getData();
+    Array2DRowRealMatrix realMatrix = new Array2DRowRealMatrix(data, false);
+    realMatrix = (Array2DRowRealMatrix)realMatrix.transpose();
+    data = realMatrix.getDataRef();
     double[][] distanceMatrix = new double[data.length][data.length];
     for(int i=0; i<data.length; i++) {
       double[] row = data[i];

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0e4605cc/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/EBEAddEvaluator.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/EBEAddEvaluator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/EBEAddEvaluator.java
index 0c86a95..e343a51 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/EBEAddEvaluator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/EBEAddEvaluator.java
@@ -58,10 +58,10 @@ public class EBEAddEvaluator extends RecursiveObjectEvaluator implements TwoValu
     } else if(first instanceof Matrix && second instanceof Matrix) {
       double[][] data1 = ((Matrix) first).getData();
       double[][] data2 = ((Matrix) second).getData();
-      Array2DRowRealMatrix matrix1 = new Array2DRowRealMatrix(data1);
-      Array2DRowRealMatrix matrix2 = new Array2DRowRealMatrix(data2);
-      RealMatrix matrix3 = matrix1.add(matrix2);
-      return new Matrix(matrix3.getData());
+      Array2DRowRealMatrix matrix1 = new Array2DRowRealMatrix(data1, false);
+      Array2DRowRealMatrix matrix2 = new Array2DRowRealMatrix(data2, false);
+      Array2DRowRealMatrix matrix3 = matrix1.add(matrix2);
+      return new Matrix(matrix3.getDataRef());
     } else {
       throw new IOException("Parameters for ebeAdd must either be two numeric arrays or two matrices. ");
     }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0e4605cc/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/EBESubtractEvaluator.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/EBESubtractEvaluator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/EBESubtractEvaluator.java
index ac7a968..f96cc38 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/EBESubtractEvaluator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/EBESubtractEvaluator.java
@@ -57,10 +57,10 @@ public class EBESubtractEvaluator extends RecursiveObjectEvaluator implements Tw
     } else if(first instanceof Matrix && second instanceof Matrix) {
       double[][] data1 = ((Matrix) first).getData();
       double[][] data2 = ((Matrix) second).getData();
-      Array2DRowRealMatrix matrix1 = new Array2DRowRealMatrix(data1);
-      Array2DRowRealMatrix matrix2 = new Array2DRowRealMatrix(data2);
-      RealMatrix matrix3 = matrix1.subtract(matrix2);
-      return new Matrix(matrix3.getData());
+      Array2DRowRealMatrix matrix1 = new Array2DRowRealMatrix(data1, false);
+      Array2DRowRealMatrix matrix2 = new Array2DRowRealMatrix(data2, false);
+      Array2DRowRealMatrix matrix3 = matrix1.subtract(matrix2);
+      return new Matrix(matrix3.getDataRef());
     } else {
       throw new IOException("Parameters for ebeSubtract must either be two numeric arrays or two matrices. ");
     }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0e4605cc/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/MatrixMultiplyEvaluator.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/MatrixMultiplyEvaluator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/MatrixMultiplyEvaluator.java
index 5f4f0d1..7818be4 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/MatrixMultiplyEvaluator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/MatrixMultiplyEvaluator.java
@@ -42,24 +42,24 @@ public class MatrixMultiplyEvaluator extends RecursiveObjectEvaluator implements
       throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - null found for the second value",toExpression(constructingFactory)));
     }
 
-    RealMatrix realMatrix1 = getMatrix(first);
-    RealMatrix realMatrix2 = getMatrix(second);
-    RealMatrix realMatrix3 = realMatrix1.multiply(realMatrix2);
-    return new Matrix(realMatrix3.getData());
+    Array2DRowRealMatrix realMatrix1 = getMatrix(first);
+    Array2DRowRealMatrix realMatrix2 = getMatrix(second);
+    Array2DRowRealMatrix realMatrix3 = realMatrix1.multiply(realMatrix2);
+    return new Matrix(realMatrix3.getDataRef());
 
   }
 
-  private RealMatrix getMatrix(Object o) throws IOException {
+  private Array2DRowRealMatrix getMatrix(Object o) throws IOException {
     if(o instanceof Matrix) {
       Matrix matrix = (Matrix)o;
-      return new Array2DRowRealMatrix(matrix.getData());
+      return new Array2DRowRealMatrix(matrix.getData(), false);
     } else if(o instanceof List) {
       List<Number> vec = (List<Number>)o;
       double[][] data1 = new double[1][vec.size()];
       for(int i=0; i<vec.size(); i++) {
         data1[0][i] = vec.get(i).doubleValue();
       }
-      return new Array2DRowRealMatrix(data1);
+      return new Array2DRowRealMatrix(data1, false);
     } else {
       throw new IOException("The matrixMult function can only be applied to numeric arrays and matrices:"+o.getClass().toString());
     }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0e4605cc/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/SumColumnsEvaluator.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/SumColumnsEvaluator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/SumColumnsEvaluator.java
index 02be8b2..510099d 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/SumColumnsEvaluator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/SumColumnsEvaluator.java
@@ -46,18 +46,15 @@ public class SumColumnsEvaluator extends RecursiveObjectEvaluator implements One
       //First transpose the matrix
       Matrix matrix = (Matrix) value;
       double[][] data = matrix.getData();
-      RealMatrix realMatrix = new Array2DRowRealMatrix(data);
-      realMatrix = realMatrix.transpose();
-      data = realMatrix.getData();
+      RealMatrix realMatrix = new Array2DRowRealMatrix(data, false);
 
-      //Now sum the rows.
-      List<Number> sums = new ArrayList(data.length);
+      List<Number> sums = new ArrayList(data[0].length);
 
-      for(int i=0; i<data.length; i++) {
+      for(int i=0; i<data[0].length; i++) {
         double sum = 0;
-        double[] row = data[i];
-        for(int j=0; j<row.length; j++){
-          sum+=row[j];
+        double[] col = realMatrix.getColumn(i);
+        for(int j=0; j<col.length; j++){
+          sum+=col[j];
         }
 
         sums.add(sum);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0e4605cc/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/TransposeEvaluator.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/TransposeEvaluator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/TransposeEvaluator.java
index dfc2346..2b991be 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/TransposeEvaluator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/TransposeEvaluator.java
@@ -42,9 +42,9 @@ public class TransposeEvaluator extends RecursiveObjectEvaluator implements OneV
     } else if(value instanceof Matrix) {
       Matrix matrix = (Matrix) value;
       double[][] data = matrix.getData();
-      Array2DRowRealMatrix amatrix = new Array2DRowRealMatrix(data);
+      Array2DRowRealMatrix amatrix = new Array2DRowRealMatrix(data, false);
       Array2DRowRealMatrix tmatrix = (Array2DRowRealMatrix)amatrix.transpose();
-      Matrix newMatrix = new Matrix(tmatrix.getData());
+      Matrix newMatrix = new Matrix(tmatrix.getDataRef());
       //Switch the row and column labels
       newMatrix.setColumnLabels(matrix.getRowLabels());
       newMatrix.setRowLabels(matrix.getColumnLabels());


[2/2] lucene-solr:master: SOLR-12198: Fix precommit

Posted by jb...@apache.org.
SOLR-12198: Fix precommit


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

Branch: refs/heads/master
Commit: 1d8c58eb6ddb203a4c692f413cf50d72b6dc188c
Parents: 0e4605c
Author: Joel Bernstein <jb...@apache.org>
Authored: Mon Apr 9 21:41:17 2018 -0400
Committer: Joel Bernstein <jb...@apache.org>
Committed: Mon Apr 9 21:41:17 2018 -0400

----------------------------------------------------------------------
 .../org/apache/solr/client/solrj/io/eval/DistanceEvaluator.java    | 1 -
 .../java/org/apache/solr/client/solrj/io/eval/EBEAddEvaluator.java | 1 -
 .../org/apache/solr/client/solrj/io/eval/EBESubtractEvaluator.java | 1 -
 .../apache/solr/client/solrj/io/eval/MatrixMultiplyEvaluator.java  | 2 --
 4 files changed, 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1d8c58eb/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 3f4d4d1..47cc39a 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
@@ -22,7 +22,6 @@ import java.util.List;
 import java.util.Locale;
 
 import org.apache.commons.math3.linear.Array2DRowRealMatrix;
-import org.apache.commons.math3.linear.RealMatrix;
 import org.apache.commons.math3.ml.distance.CanberraDistance;
 import org.apache.commons.math3.ml.distance.DistanceMeasure;
 import org.apache.commons.math3.ml.distance.EarthMoversDistance;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1d8c58eb/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/EBEAddEvaluator.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/EBEAddEvaluator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/EBEAddEvaluator.java
index e343a51..9409f15 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/EBEAddEvaluator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/EBEAddEvaluator.java
@@ -22,7 +22,6 @@ import java.util.List;
 import java.util.Locale;
 
 import org.apache.commons.math3.util.MathArrays;
-import org.apache.commons.math3.linear.RealMatrix;
 import org.apache.commons.math3.linear.Array2DRowRealMatrix;
 import org.apache.solr.client.solrj.io.stream.expr.StreamExpression;
 import org.apache.solr.client.solrj.io.stream.expr.StreamFactory;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1d8c58eb/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/EBESubtractEvaluator.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/EBESubtractEvaluator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/EBESubtractEvaluator.java
index f96cc38..87857de 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/EBESubtractEvaluator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/EBESubtractEvaluator.java
@@ -22,7 +22,6 @@ import java.util.List;
 import java.util.Locale;
 
 import org.apache.commons.math3.linear.Array2DRowRealMatrix;
-import org.apache.commons.math3.linear.RealMatrix;
 import org.apache.commons.math3.util.MathArrays;
 import org.apache.solr.client.solrj.io.stream.expr.StreamExpression;
 import org.apache.solr.client.solrj.io.stream.expr.StreamFactory;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1d8c58eb/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/MatrixMultiplyEvaluator.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/MatrixMultiplyEvaluator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/MatrixMultiplyEvaluator.java
index 7818be4..6b469be 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/MatrixMultiplyEvaluator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/eval/MatrixMultiplyEvaluator.java
@@ -21,8 +21,6 @@ import java.util.List;
 import java.util.Locale;
 
 import org.apache.commons.math3.linear.Array2DRowRealMatrix;
-import org.apache.commons.math3.linear.RealMatrix;
-
 import org.apache.solr.client.solrj.io.stream.expr.StreamExpression;
 import org.apache.solr.client.solrj.io.stream.expr.StreamFactory;