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;