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 2016/07/06 21:04:57 UTC
[5/6] lucene-solr:branch_6x: SOLR-9193: Added test using the termFreq
param and basic error handling
SOLR-9193: Added test using the termFreq param and basic error handling
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/7a5e6a5f
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/7a5e6a5f
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/7a5e6a5f
Branch: refs/heads/branch_6x
Commit: 7a5e6a5f7e479b0950cf0d26484f8789c5aa5fcf
Parents: bc0eac8
Author: jbernste <jb...@apache.org>
Authored: Tue Jul 5 13:30:52 2016 -0400
Committer: jbernste <jb...@apache.org>
Committed: Wed Jul 6 16:58:40 2016 -0400
----------------------------------------------------------------------
.../solrj/io/stream/ScoreNodesStream.java | 9 +++
.../solrj/io/graph/GraphExpressionTest.java | 70 +++++++++++++++-----
2 files changed, 62 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/7a5e6a5f/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/ScoreNodesStream.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/ScoreNodesStream.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/ScoreNodesStream.java
index 0d305fd..814b69c 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/ScoreNodesStream.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/ScoreNodesStream.java
@@ -165,7 +165,13 @@ public class ScoreNodesStream extends TupleStream implements Expressible
break;
}
+ if(!node.fields.containsKey("node")) {
+ throw new IOException("node field not present in the Tuple");
+ }
+
String nodeId = node.getString("node");
+
+
nodes.put(nodeId, node);
if(builder.length() > 0) {
builder.append(",");
@@ -202,6 +208,9 @@ public class ScoreNodesStream extends TupleStream implements Expressible
String term = terms.getName(t);
Number docFreq = terms.get(term);
Tuple tuple = nodes.get(term);
+ if(!tuple.fields.containsKey(termFreq)) {
+ throw new Exception("termFreq field not present in the Tuple");
+ }
Number termFreqValue = (Number)tuple.get(termFreq);
float score = termFreqValue.floatValue() * (float) (Math.log((numDocs + 1) / (docFreq.doubleValue() + 1)) + 1.0);
tuple.put("nodeScore", score);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/7a5e6a5f/solr/solrj/src/test/org/apache/solr/client/solrj/io/graph/GraphExpressionTest.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/io/graph/GraphExpressionTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/io/graph/GraphExpressionTest.java
index 9dbd706..a141b73 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/io/graph/GraphExpressionTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/io/graph/GraphExpressionTest.java
@@ -392,26 +392,25 @@ public class GraphExpressionTest extends SolrCloudTestCase {
new UpdateRequest()
- .add(id, "0", "basket_s", "basket1", "product_s", "product1", "price_f", "20")
- .add(id, "1", "basket_s", "basket1", "product_s", "product3", "price_f", "30")
- .add(id, "2", "basket_s", "basket1", "product_s", "product5", "price_f", "1")
- .add(id, "3", "basket_s", "basket2", "product_s", "product1", "price_f", "2")
- .add(id, "4", "basket_s", "basket2", "product_s", "product6", "price_f", "5")
- .add(id, "5", "basket_s", "basket2", "product_s", "product7", "price_f", "10")
- .add(id, "6", "basket_s", "basket3", "product_s", "product4", "price_f", "20")
- .add(id, "7", "basket_s", "basket3", "product_s", "product3", "price_f", "10")
- .add(id, "8", "basket_s", "basket3", "product_s", "product1", "price_f", "10")
- .add(id, "9", "basket_s", "basket4", "product_s", "product4", "price_f", "40")
- .add(id, "10", "basket_s", "basket4", "product_s", "product3", "price_f", "10")
- .add(id, "11", "basket_s", "basket4", "product_s", "product1", "price_f", "10")
- .add(id, "12", "basket_s", "basket5", "product_s", "product1", "price_f", "10")
- .add(id, "13", "basket_s", "basket6", "product_s", "product1", "price_f", "10")
- .add(id, "14", "basket_s", "basket7", "product_s", "product1", "price_f", "10")
- .add(id, "15", "basket_s", "basket4", "product_s", "product1", "price_f", "10")
+ .add(id, "0", "basket_s", "basket1", "product_s", "product1", "price_f", "1")
+ .add(id, "1", "basket_s", "basket1", "product_s", "product3", "price_f", "1")
+ .add(id, "2", "basket_s", "basket1", "product_s", "product5", "price_f", "100")
+ .add(id, "3", "basket_s", "basket2", "product_s", "product1", "price_f", "1")
+ .add(id, "4", "basket_s", "basket2", "product_s", "product6", "price_f", "1")
+ .add(id, "5", "basket_s", "basket2", "product_s", "product7", "price_f", "1")
+ .add(id, "6", "basket_s", "basket3", "product_s", "product4", "price_f", "1")
+ .add(id, "7", "basket_s", "basket3", "product_s", "product3", "price_f", "1")
+ .add(id, "8", "basket_s", "basket3", "product_s", "product1", "price_f", "1")
+ .add(id, "9", "basket_s", "basket4", "product_s", "product4", "price_f", "1")
+ .add(id, "10", "basket_s", "basket4", "product_s", "product3", "price_f", "1")
+ .add(id, "11", "basket_s", "basket4", "product_s", "product1", "price_f", "1")
+ .add(id, "12", "basket_s", "basket5", "product_s", "product1", "price_f", "1")
+ .add(id, "13", "basket_s", "basket6", "product_s", "product1", "price_f", "1")
+ .add(id, "14", "basket_s", "basket7", "product_s", "product1", "price_f", "1")
+ .add(id, "15", "basket_s", "basket4", "product_s", "product1", "price_f", "1")
.commit(cluster.getSolrClient(), COLLECTION);
List<Tuple> tuples = null;
- Set<String> paths = null;
TupleStream stream = null;
StreamContext context = new StreamContext();
SolrClientCache cache = new SolrClientCache();
@@ -470,6 +469,43 @@ public class GraphExpressionTest extends SolrCloudTestCase {
assert(tuple2.getLong("docFreq") == 1);
assert(tuple2.getLong("count(*)") == 1);
+
+ //Test using a different termFreq field then the default count(*)
+ expr2 = "sort(by=\"nodeScore desc\", " +
+ "scoreNodes(termFreq=\"avg(price_f)\",gatherNodes(collection1, " +
+ expr+","+
+ "walk=\"node->basket_s\"," +
+ "gather=\"product_s\", " +
+ "count(*), " +
+ "avg(price_f), " +
+ "sum(price_f), " +
+ "min(price_f), " +
+ "max(price_f))))";
+
+ stream = factory.constructStream(expr2);
+
+ context = new StreamContext();
+ context.setSolrClientCache(cache);
+
+ stream.setStreamContext(context);
+
+ tuples = getTuples(stream);
+
+ tuple0 = tuples.get(0);
+ assert(tuple0.getString("node").equals("product5"));
+ assert(tuple0.getLong("docFreq") == 1);
+ assert(tuple0.getDouble("avg(price_f)") == 100);
+
+ tuple1 = tuples.get(1);
+ assert(tuple1.getString("node").equals("product4"));
+ assert(tuple1.getLong("docFreq") == 2);
+ assert(tuple1.getDouble("avg(price_f)") == 1);
+
+ tuple2 = tuples.get(2);
+ assert(tuple2.getString("node").equals("product1"));
+ assert(tuple2.getLong("docFreq") == 8);
+ assert(tuple2.getDouble("avg(price_f)") == 1);
+
cache.close();
}