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/12/12 01:37:31 UTC
[lucene-solr] branch master updated: SOLR-14060: Allow the random
Streaming Expression to create the x-axis
This is an automated email from the ASF dual-hosted git repository.
jbernste pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
The following commit(s) were added to refs/heads/master by this push:
new ee0a6b4 SOLR-14060: Allow the random Streaming Expression to create the x-axis
ee0a6b4 is described below
commit ee0a6b45ca50b94bf1a68032687442919d19ecb9
Author: Joel Bernstein <jb...@apache.org>
AuthorDate: Wed Dec 11 20:23:20 2019 -0500
SOLR-14060: Allow the random Streaming Expression to create the x-axis
---
.../solr/client/solrj/io/stream/RandomStream.java | 31 ++++++++++++++++++++++
.../solrj/io/stream/StreamExpressionTest.java | 8 ++++++
2 files changed, 39 insertions(+)
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/RandomStream.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/RandomStream.java
index 8f06500..aca0e3d 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/RandomStream.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/RandomStream.java
@@ -47,6 +47,7 @@ import org.apache.solr.client.solrj.request.QueryRequest;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
+import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.params.ModifiableSolrParams;
import static org.apache.solr.common.params.CommonParams.SORT;
@@ -65,6 +66,8 @@ public class RandomStream extends TupleStream implements Expressible {
protected transient SolrClientCache cache;
protected transient CloudSolrClient cloudSolrClient;
private Iterator<SolrDocument> documentIterator;
+ private int x;
+ private boolean outputX;
public RandomStream() {
// Used by the RandomFacade
@@ -98,6 +101,7 @@ public class RandomStream extends TupleStream implements Expressible {
}
+
// zkHost, optional - if not provided then will look into factory list to get
String zkHost = null;
if(null == zkHostExpression){
@@ -121,6 +125,25 @@ public class RandomStream extends TupleStream implements Expressible {
this.zkHost = zkHost;
this.props = props;
this.collection = collection;
+ if(props.containsKey(CommonParams.FL)) {
+ String fl = props.get(CommonParams.FL);
+ if(fl != null) {
+ if(fl.equals("*")) {
+ outputX = true;
+ } else {
+ String[] fields = fl.split(",");
+ for (String f : fields) {
+ if (f.trim().equals("x")) {
+ outputX = true;
+ }
+ }
+ }
+ } else {
+ outputX = true;
+ }
+ } else {
+ outputX = true;
+ }
}
@Override
@@ -213,9 +236,17 @@ public class RandomStream extends TupleStream implements Expressible {
if(documentIterator.hasNext()) {
Map map = new HashMap();
SolrDocument doc = documentIterator.next();
+
+ // Put the generated x-axis first. If there really is an x field it will overwrite it.
+ if(outputX) {
+ map.put("x", x++);
+ }
+
for(Entry<String, Object> entry : doc.entrySet()) {
map.put(entry.getKey(), entry.getValue());
}
+
+
return new Tuple(map);
} else {
Map fields = new HashMap();
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionTest.java
index 7bb0584..a722f04 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionTest.java
@@ -662,6 +662,9 @@ public class StreamExpressionTest extends SolrCloudTestCase {
SolrStream solrStream = new SolrStream(jetty.getBaseUrl().toString() + "/collection1", sParams);
List<Tuple> tuples4 = getTuples(solrStream);
assert (tuples4.size() == 1);
+ //Assert no x-axis
+ assertNull(tuples4.get(0).get("x"));
+
sParams = new ModifiableSolrParams(StreamingTest.mapParams(CommonParams.QT, "/stream"));
sParams.add("expr", "random(" + COLLECTIONORALIAS + ")");
@@ -674,6 +677,11 @@ public class StreamExpressionTest extends SolrCloudTestCase {
assert(fields.containsKey("a_f"));
assert(fields.containsKey("a_i"));
assert(fields.containsKey("a_s"));
+ //Assert the x-axis:
+ for(int i=0; i<tuples4.size(); i++) {
+ assertEquals(tuples4.get(i).getLong("x").longValue(), i);
+ }
+
} finally {
cache.close();
}