use of org.apache.solr.client.solrj.io.stream.metrics.SumMetric in project lucene-solr by apache.
the class StreamingTest method testFacetStream.
@Test
public void testFacetStream() throws Exception {
new UpdateRequest().add(id, "0", "a_s", "hello0", "a_i", "0", "a_f", "1").add(id, "2", "a_s", "hello0", "a_i", "2", "a_f", "2").add(id, "3", "a_s", "hello3", "a_i", "3", "a_f", "3").add(id, "4", "a_s", "hello4", "a_i", "4", "a_f", "4").add(id, "1", "a_s", "hello0", "a_i", "1", "a_f", "5").add(id, "5", "a_s", "hello3", "a_i", "10", "a_f", "6").add(id, "6", "a_s", "hello4", "a_i", "11", "a_f", "7").add(id, "7", "a_s", "hello3", "a_i", "12", "a_f", "8").add(id, "8", "a_s", "hello3", "a_i", "13", "a_f", "9").add(id, "9", "a_s", "hello0", "a_i", "14", "a_f", "10").commit(cluster.getSolrClient(), COLLECTIONORALIAS);
StreamContext streamContext = new StreamContext();
SolrClientCache solrClientCache = new SolrClientCache();
streamContext.setSolrClientCache(solrClientCache);
try {
SolrParams sParamsA = mapParams("q", "*:*", "fl", "a_s,a_i,a_f", "sort", "a_s asc");
Bucket[] buckets = { new Bucket("a_s") };
Metric[] metrics = { new SumMetric("a_i"), new SumMetric("a_f"), new MinMetric("a_i"), new MinMetric("a_f"), new MaxMetric("a_i"), new MaxMetric("a_f"), new MeanMetric("a_i"), new MeanMetric("a_f"), new CountMetric() };
FieldComparator[] sorts = { new FieldComparator("sum(a_i)", ComparatorOrder.ASCENDING) };
FacetStream facetStream = new FacetStream(zkHost, COLLECTIONORALIAS, sParamsA, buckets, metrics, sorts, 100);
List<Tuple> tuples = getTuples(facetStream);
assert (tuples.size() == 3);
//Test Long and Double Sums
Tuple tuple = tuples.get(0);
String bucket = tuple.getString("a_s");
Double sumi = tuple.getDouble("sum(a_i)");
Double sumf = tuple.getDouble("sum(a_f)");
Double mini = tuple.getDouble("min(a_i)");
Double minf = tuple.getDouble("min(a_f)");
Double maxi = tuple.getDouble("max(a_i)");
Double maxf = tuple.getDouble("max(a_f)");
Double avgi = tuple.getDouble("avg(a_i)");
Double avgf = tuple.getDouble("avg(a_f)");
Double count = tuple.getDouble("count(*)");
assertEquals("hello4", bucket);
assertEquals(15, sumi.longValue());
assertEquals(11.0, sumf.doubleValue(), 0.01);
assertEquals(4.0, mini.doubleValue(), 0.01);
assertEquals(4.0, minf.doubleValue(), 0.01);
assertEquals(11.0, maxi.doubleValue(), 0.01);
assertEquals(7.0, maxf.doubleValue(), 0.01);
assertEquals(7.5, avgi.doubleValue(), 0.01);
assertEquals(5.5, avgf.doubleValue(), 0.01);
assertEquals(2, count.doubleValue(), 0.01);
tuple = tuples.get(1);
bucket = tuple.getString("a_s");
sumi = tuple.getDouble("sum(a_i)");
sumf = tuple.getDouble("sum(a_f)");
mini = tuple.getDouble("min(a_i)");
minf = tuple.getDouble("min(a_f)");
maxi = tuple.getDouble("max(a_i)");
maxf = tuple.getDouble("max(a_f)");
avgi = tuple.getDouble("avg(a_i)");
avgf = tuple.getDouble("avg(a_f)");
count = tuple.getDouble("count(*)");
assertEquals("hello0", bucket);
assertEquals(17, sumi.doubleValue(), .01);
assertEquals(18, sumf.doubleValue(), .01);
assertEquals(0.0, mini.doubleValue(), .01);
assertEquals(1.0, minf.doubleValue(), .01);
assertEquals(14.0, maxi.doubleValue(), .01);
assertEquals(10.0, maxf.doubleValue(), .01);
assertEquals(4.25, avgi.doubleValue(), .01);
assertEquals(4.5, avgf.doubleValue(), .01);
assertEquals(4, count.doubleValue(), .01);
tuple = tuples.get(2);
bucket = tuple.getString("a_s");
sumi = tuple.getDouble("sum(a_i)");
sumf = tuple.getDouble("sum(a_f)");
mini = tuple.getDouble("min(a_i)");
minf = tuple.getDouble("min(a_f)");
maxi = tuple.getDouble("max(a_i)");
maxf = tuple.getDouble("max(a_f)");
avgi = tuple.getDouble("avg(a_i)");
avgf = tuple.getDouble("avg(a_f)");
count = tuple.getDouble("count(*)");
assertEquals("hello3", bucket);
assertEquals(38.0, sumi.doubleValue(), 0.01);
assertEquals(26.0, sumf.doubleValue(), 0.01);
assertEquals(3.0, mini.doubleValue(), 0.01);
assertEquals(3.0, minf.doubleValue(), 0.01);
assertEquals(13.0, maxi.doubleValue(), 0.01);
assertEquals(9.0, maxf.doubleValue(), 0.01);
assertEquals(9.5, avgi.doubleValue(), 0.01);
assertEquals(6.5, avgf.doubleValue(), 0.01);
assertEquals(4, count.doubleValue(), 0.01);
//Reverse the Sort.
sorts[0] = new FieldComparator("sum(a_i)", ComparatorOrder.DESCENDING);
facetStream = new FacetStream(zkHost, COLLECTIONORALIAS, sParamsA, buckets, metrics, sorts, 100);
tuples = getTuples(facetStream);
assertEquals(3, tuples.size());
//Test Long and Double Sums
tuple = tuples.get(0);
bucket = tuple.getString("a_s");
sumi = tuple.getDouble("sum(a_i)");
sumf = tuple.getDouble("sum(a_f)");
mini = tuple.getDouble("min(a_i)");
minf = tuple.getDouble("min(a_f)");
maxi = tuple.getDouble("max(a_i)");
maxf = tuple.getDouble("max(a_f)");
avgi = tuple.getDouble("avg(a_i)");
avgf = tuple.getDouble("avg(a_f)");
count = tuple.getDouble("count(*)");
assertEquals("hello3", bucket);
assertEquals(38, sumi.doubleValue(), 0.1);
assertEquals(26, sumf.doubleValue(), 0.1);
assertEquals(3, mini.doubleValue(), 0.1);
assertEquals(3, minf.doubleValue(), 0.1);
assertEquals(13, maxi.doubleValue(), 0.1);
assertEquals(9, maxf.doubleValue(), 0.1);
assertEquals(9.5, avgi.doubleValue(), 0.1);
assertEquals(6.5, avgf.doubleValue(), 0.1);
assertEquals(4, count.doubleValue(), 0.1);
tuple = tuples.get(1);
bucket = tuple.getString("a_s");
sumi = tuple.getDouble("sum(a_i)");
sumf = tuple.getDouble("sum(a_f)");
mini = tuple.getDouble("min(a_i)");
minf = tuple.getDouble("min(a_f)");
maxi = tuple.getDouble("max(a_i)");
maxf = tuple.getDouble("max(a_f)");
avgi = tuple.getDouble("avg(a_i)");
avgf = tuple.getDouble("avg(a_f)");
count = tuple.getDouble("count(*)");
assertEquals("hello0", bucket);
assertEquals(17, sumi.doubleValue(), 0.01);
assertEquals(18, sumf.doubleValue(), 0.01);
assertEquals(0, mini.doubleValue(), 0.01);
assertEquals(1, minf.doubleValue(), 0.01);
assertEquals(14, maxi.doubleValue(), 0.01);
assertEquals(10, maxf.doubleValue(), 0.01);
assertEquals(4.25, avgi.doubleValue(), 0.01);
assertEquals(4.5, avgf.doubleValue(), 0.01);
assertEquals(4, count.doubleValue(), 0.01);
tuple = tuples.get(2);
bucket = tuple.getString("a_s");
sumi = tuple.getDouble("sum(a_i)");
sumf = tuple.getDouble("sum(a_f)");
mini = tuple.getDouble("min(a_i)");
minf = tuple.getDouble("min(a_f)");
maxi = tuple.getDouble("max(a_i)");
maxf = tuple.getDouble("max(a_f)");
avgi = tuple.getDouble("avg(a_i)");
avgf = tuple.getDouble("avg(a_f)");
count = tuple.getDouble("count(*)");
assertEquals("hello4", bucket);
assertEquals(15, sumi.longValue());
assertEquals(11, sumf.doubleValue(), 0.01);
assertEquals(4.0, mini.doubleValue(), 0.01);
assertEquals(4.0, minf.doubleValue(), 0.01);
assertEquals(11.0, maxi.doubleValue(), 0.01);
assertEquals(7.0, maxf.doubleValue(), 0.01);
assertEquals(7.5, avgi.doubleValue(), 0.01);
assertEquals(5.5, avgf.doubleValue(), 0.01);
assertEquals(2, count.doubleValue(), 0.01);
//Test index sort
sorts[0] = new FieldComparator("a_s", ComparatorOrder.DESCENDING);
facetStream = new FacetStream(zkHost, COLLECTIONORALIAS, sParamsA, buckets, metrics, sorts, 100);
facetStream.setStreamContext(streamContext);
tuples = getTuples(facetStream);
assertEquals(3, tuples.size());
tuple = tuples.get(0);
bucket = tuple.getString("a_s");
sumi = tuple.getDouble("sum(a_i)");
sumf = tuple.getDouble("sum(a_f)");
mini = tuple.getDouble("min(a_i)");
minf = tuple.getDouble("min(a_f)");
maxi = tuple.getDouble("max(a_i)");
maxf = tuple.getDouble("max(a_f)");
avgi = tuple.getDouble("avg(a_i)");
avgf = tuple.getDouble("avg(a_f)");
count = tuple.getDouble("count(*)");
assertEquals("hello4", bucket);
assertEquals(15, sumi.longValue());
assertEquals(11, sumf.doubleValue(), 0.01);
assertEquals(4, mini.doubleValue(), 0.01);
assertEquals(4, minf.doubleValue(), 0.01);
assertEquals(11, maxi.doubleValue(), 0.01);
assertEquals(7, maxf.doubleValue(), 0.01);
assertEquals(7.5, avgi.doubleValue(), 0.01);
assertEquals(5.5, avgf.doubleValue(), 0.01);
assertEquals(2, count.doubleValue(), 0.01);
tuple = tuples.get(1);
bucket = tuple.getString("a_s");
sumi = tuple.getDouble("sum(a_i)");
sumf = tuple.getDouble("sum(a_f)");
mini = tuple.getDouble("min(a_i)");
minf = tuple.getDouble("min(a_f)");
maxi = tuple.getDouble("max(a_i)");
maxf = tuple.getDouble("max(a_f)");
avgi = tuple.getDouble("avg(a_i)");
avgf = tuple.getDouble("avg(a_f)");
count = tuple.getDouble("count(*)");
assertTrue(bucket.equals("hello3"));
assertTrue(sumi.doubleValue() == 38.0D);
assertTrue(sumf.doubleValue() == 26.0D);
assertTrue(mini.doubleValue() == 3.0D);
assertTrue(minf.doubleValue() == 3.0D);
assertTrue(maxi.doubleValue() == 13.0D);
assertTrue(maxf.doubleValue() == 9.0D);
assertTrue(avgi.doubleValue() == 9.5D);
assertTrue(avgf.doubleValue() == 6.5D);
assertTrue(count.doubleValue() == 4);
tuple = tuples.get(2);
bucket = tuple.getString("a_s");
sumi = tuple.getDouble("sum(a_i)");
sumf = tuple.getDouble("sum(a_f)");
mini = tuple.getDouble("min(a_i)");
minf = tuple.getDouble("min(a_f)");
maxi = tuple.getDouble("max(a_i)");
maxf = tuple.getDouble("max(a_f)");
avgi = tuple.getDouble("avg(a_i)");
avgf = tuple.getDouble("avg(a_f)");
count = tuple.getDouble("count(*)");
assertEquals("hello0", bucket);
assertEquals(17, sumi.doubleValue(), 0.01);
assertEquals(18, sumf.doubleValue(), 0.01);
assertEquals(0, mini.doubleValue(), 0.01);
assertEquals(1, minf.doubleValue(), 0.01);
assertEquals(14, maxi.doubleValue(), 0.01);
assertEquals(10, maxf.doubleValue(), 0.01);
assertEquals(4.25, avgi.doubleValue(), 0.01);
assertEquals(4.5, avgf.doubleValue(), 0.01);
assertEquals(4, count.doubleValue(), 0.01);
//Test index sort
sorts[0] = new FieldComparator("a_s", ComparatorOrder.ASCENDING);
facetStream = new FacetStream(zkHost, COLLECTIONORALIAS, sParamsA, buckets, metrics, sorts, 100);
facetStream.setStreamContext(streamContext);
tuples = getTuples(facetStream);
assertEquals(3, tuples.size());
tuple = tuples.get(0);
bucket = tuple.getString("a_s");
sumi = tuple.getDouble("sum(a_i)");
sumf = tuple.getDouble("sum(a_f)");
mini = tuple.getDouble("min(a_i)");
minf = tuple.getDouble("min(a_f)");
maxi = tuple.getDouble("max(a_i)");
maxf = tuple.getDouble("max(a_f)");
avgi = tuple.getDouble("avg(a_i)");
avgf = tuple.getDouble("avg(a_f)");
count = tuple.getDouble("count(*)");
assertEquals("hello0", bucket);
assertEquals(17, sumi.doubleValue(), 0.01);
assertEquals(18, sumf.doubleValue(), 0.01);
assertEquals(0, mini.doubleValue(), 0.01);
assertEquals(1, minf.doubleValue(), 0.01);
assertEquals(14, maxi.doubleValue(), 0.01);
assertEquals(10, maxf.doubleValue(), 0.01);
assertEquals(4.25, avgi.doubleValue(), 0.0001);
assertEquals(4.5, avgf.doubleValue(), 0.001);
assertEquals(4, count.doubleValue(), 0.01);
tuple = tuples.get(1);
bucket = tuple.getString("a_s");
sumi = tuple.getDouble("sum(a_i)");
sumf = tuple.getDouble("sum(a_f)");
mini = tuple.getDouble("min(a_i)");
minf = tuple.getDouble("min(a_f)");
maxi = tuple.getDouble("max(a_i)");
maxf = tuple.getDouble("max(a_f)");
avgi = tuple.getDouble("avg(a_i)");
avgf = tuple.getDouble("avg(a_f)");
count = tuple.getDouble("count(*)");
assertEquals("hello3", bucket);
assertEquals(38, sumi.doubleValue(), 0.01);
assertEquals(26, sumf.doubleValue(), 0.01);
assertEquals(3, mini.doubleValue(), 0.01);
assertEquals(3, minf.doubleValue(), 0.01);
assertEquals(13, maxi.doubleValue(), 0.01);
assertEquals(9, maxf.doubleValue(), 0.01);
assertEquals(9.5, avgi.doubleValue(), 0.01);
assertEquals(6.5, avgf.doubleValue(), 0.01);
assertEquals(4, count.doubleValue(), 0.01);
tuple = tuples.get(2);
bucket = tuple.getString("a_s");
sumi = tuple.getDouble("sum(a_i)");
sumf = tuple.getDouble("sum(a_f)");
mini = tuple.getDouble("min(a_i)");
minf = tuple.getDouble("min(a_f)");
maxi = tuple.getDouble("max(a_i)");
maxf = tuple.getDouble("max(a_f)");
avgi = tuple.getDouble("avg(a_i)");
avgf = tuple.getDouble("avg(a_f)");
count = tuple.getDouble("count(*)");
assertEquals("hello4", bucket);
assertEquals(15, sumi.longValue());
assertEquals(11.0, sumf.doubleValue(), 0.1);
assertEquals(4.0, mini.doubleValue(), 0.1);
assertEquals(4.0, minf.doubleValue(), 0.1);
assertEquals(11.0, maxi.doubleValue(), 0.1);
assertEquals(7.0, maxf.doubleValue(), 0.1);
assertEquals(7.5, avgi.doubleValue(), 0.1);
assertEquals(5.5, avgf.doubleValue(), 0.1);
assertEquals(2, count.doubleValue(), 0.1);
} finally {
solrClientCache.close();
}
}
use of org.apache.solr.client.solrj.io.stream.metrics.SumMetric in project lucene-solr by apache.
the class StreamingTest method testRollupStream.
@Test
public void testRollupStream() throws Exception {
new UpdateRequest().add(id, "0", "a_s", "hello0", "a_i", "0", "a_f", "1").add(id, "2", "a_s", "hello0", "a_i", "2", "a_f", "2").add(id, "3", "a_s", "hello3", "a_i", "3", "a_f", "3").add(id, "4", "a_s", "hello4", "a_i", "4", "a_f", "4").add(id, "1", "a_s", "hello0", "a_i", "1", "a_f", "5").add(id, "5", "a_s", "hello3", "a_i", "10", "a_f", "6").add(id, "6", "a_s", "hello4", "a_i", "11", "a_f", "7").add(id, "7", "a_s", "hello3", "a_i", "12", "a_f", "8").add(id, "8", "a_s", "hello3", "a_i", "13", "a_f", "9").add(id, "9", "a_s", "hello0", "a_i", "14", "a_f", "10").commit(cluster.getSolrClient(), COLLECTIONORALIAS);
StreamContext streamContext = new StreamContext();
SolrClientCache solrClientCache = new SolrClientCache();
streamContext.setSolrClientCache(solrClientCache);
try {
SolrParams sParamsA = mapParams("q", "*:*", "fl", "a_s,a_i,a_f", "sort", "a_s asc");
CloudSolrStream stream = new CloudSolrStream(zkHost, COLLECTIONORALIAS, sParamsA);
Bucket[] buckets = { new Bucket("a_s") };
Metric[] metrics = { new SumMetric("a_i"), new SumMetric("a_f"), new MinMetric("a_i"), new MinMetric("a_f"), new MaxMetric("a_i"), new MaxMetric("a_f"), new MeanMetric("a_i"), new MeanMetric("a_f"), new CountMetric() };
RollupStream rollupStream = new RollupStream(stream, buckets, metrics);
rollupStream.setStreamContext(streamContext);
List<Tuple> tuples = getTuples(rollupStream);
assert (tuples.size() == 3);
//Test Long and Double Sums
Tuple tuple = tuples.get(0);
String bucket = tuple.getString("a_s");
Double sumi = tuple.getDouble("sum(a_i)");
Double sumf = tuple.getDouble("sum(a_f)");
Double mini = tuple.getDouble("min(a_i)");
Double minf = tuple.getDouble("min(a_f)");
Double maxi = tuple.getDouble("max(a_i)");
Double maxf = tuple.getDouble("max(a_f)");
Double avgi = tuple.getDouble("avg(a_i)");
Double avgf = tuple.getDouble("avg(a_f)");
Double count = tuple.getDouble("count(*)");
assertEquals("hello0", bucket);
assertEquals(17, sumi.doubleValue(), 0.001);
assertEquals(18, sumf.doubleValue(), 0.001);
assertEquals(0, mini.doubleValue(), 0.001);
assertEquals(1, minf.doubleValue(), 0.001);
assertEquals(14, maxi.doubleValue(), 0.001);
assertEquals(10, maxf.doubleValue(), 0.001);
assertEquals(4.25, avgi.doubleValue(), 0.001);
assertEquals(4.5, avgf.doubleValue(), 0.001);
assertEquals(4, count.doubleValue(), 0.001);
tuple = tuples.get(1);
bucket = tuple.getString("a_s");
sumi = tuple.getDouble("sum(a_i)");
sumf = tuple.getDouble("sum(a_f)");
mini = tuple.getDouble("min(a_i)");
minf = tuple.getDouble("min(a_f)");
maxi = tuple.getDouble("max(a_i)");
maxf = tuple.getDouble("max(a_f)");
avgi = tuple.getDouble("avg(a_i)");
avgf = tuple.getDouble("avg(a_f)");
count = tuple.getDouble("count(*)");
assertEquals("hello3", bucket);
assertEquals(38, sumi.doubleValue(), 0.001);
assertEquals(26, sumf.doubleValue(), 0.001);
assertEquals(3, mini.doubleValue(), 0.001);
assertEquals(3, minf.doubleValue(), 0.001);
assertEquals(13, maxi.doubleValue(), 0.001);
assertEquals(9, maxf.doubleValue(), 0.001);
assertEquals(9.5, avgi.doubleValue(), 0.001);
assertEquals(6.5, avgf.doubleValue(), 0.001);
assertEquals(4, count.doubleValue(), 0.001);
tuple = tuples.get(2);
bucket = tuple.getString("a_s");
sumi = tuple.getDouble("sum(a_i)");
sumf = tuple.getDouble("sum(a_f)");
mini = tuple.getDouble("min(a_i)");
minf = tuple.getDouble("min(a_f)");
maxi = tuple.getDouble("max(a_i)");
maxf = tuple.getDouble("max(a_f)");
avgi = tuple.getDouble("avg(a_i)");
avgf = tuple.getDouble("avg(a_f)");
count = tuple.getDouble("count(*)");
assertEquals("hello4", bucket);
assertEquals(15, sumi.longValue());
assertEquals(11, sumf.doubleValue(), 0.01);
assertEquals(4, mini.doubleValue(), 0.01);
assertEquals(4, minf.doubleValue(), 0.01);
assertEquals(11, maxi.doubleValue(), 0.01);
assertEquals(7, maxf.doubleValue(), 0.01);
assertEquals(7.5, avgi.doubleValue(), 0.01);
assertEquals(5.5, avgf.doubleValue(), 0.01);
assertEquals(2, count.doubleValue(), 0.01);
// Test will null metrics
rollupStream = new RollupStream(stream, buckets, metrics);
rollupStream.setStreamContext(streamContext);
tuples = getTuples(rollupStream);
assert (tuples.size() == 3);
tuple = tuples.get(0);
bucket = tuple.getString("a_s");
assertTrue(bucket.equals("hello0"));
tuple = tuples.get(1);
bucket = tuple.getString("a_s");
assertTrue(bucket.equals("hello3"));
tuple = tuples.get(2);
bucket = tuple.getString("a_s");
assertTrue(bucket.equals("hello4"));
//Test will null value in the grouping field
new UpdateRequest().add(id, "12", "a_s", null, "a_i", "14", "a_f", "10").commit(cluster.getSolrClient(), COLLECTIONORALIAS);
sParamsA = mapParams("q", "*:*", "fl", "a_s,a_i,a_f", "sort", "a_s asc", "qt", "/export");
stream = new CloudSolrStream(zkHost, COLLECTIONORALIAS, sParamsA);
Bucket[] buckets1 = { new Bucket("a_s") };
Metric[] metrics1 = { new SumMetric("a_i"), new SumMetric("a_f"), new MinMetric("a_i"), new MinMetric("a_f"), new MaxMetric("a_i"), new MaxMetric("a_f"), new MeanMetric("a_i"), new MeanMetric("a_f"), new CountMetric() };
rollupStream = new RollupStream(stream, buckets1, metrics1);
rollupStream.setStreamContext(streamContext);
tuples = getTuples(rollupStream);
//Check that we've got the extra NULL bucket
assertEquals(4, tuples.size());
tuple = tuples.get(0);
assertEquals("NULL", tuple.getString("a_s"));
sumi = tuple.getDouble("sum(a_i)");
sumf = tuple.getDouble("sum(a_f)");
mini = tuple.getDouble("min(a_i)");
minf = tuple.getDouble("min(a_f)");
maxi = tuple.getDouble("max(a_i)");
maxf = tuple.getDouble("max(a_f)");
avgi = tuple.getDouble("avg(a_i)");
avgf = tuple.getDouble("avg(a_f)");
count = tuple.getDouble("count(*)");
assertEquals(14, sumi.doubleValue(), 0.01);
assertEquals(10, sumf.doubleValue(), 0.01);
assertEquals(14, mini.doubleValue(), 0.01);
assertEquals(10, minf.doubleValue(), 0.01);
assertEquals(14, maxi.doubleValue(), 0.01);
assertEquals(10, maxf.doubleValue(), 0.01);
assertEquals(14, avgi.doubleValue(), 0.01);
assertEquals(10, avgf.doubleValue(), 0.01);
assertEquals(1, count.doubleValue(), 0.01);
} finally {
solrClientCache.close();
}
}
use of org.apache.solr.client.solrj.io.stream.metrics.SumMetric in project lucene-solr by apache.
the class StreamingTest method testSubFacetStream.
@Test
public void testSubFacetStream() throws Exception {
new UpdateRequest().add(id, "0", "level1_s", "hello0", "level2_s", "a", "a_i", "0", "a_f", "1").add(id, "2", "level1_s", "hello0", "level2_s", "a", "a_i", "2", "a_f", "2").add(id, "3", "level1_s", "hello3", "level2_s", "a", "a_i", "3", "a_f", "3").add(id, "4", "level1_s", "hello4", "level2_s", "a", "a_i", "4", "a_f", "4").add(id, "1", "level1_s", "hello0", "level2_s", "b", "a_i", "1", "a_f", "5").add(id, "5", "level1_s", "hello3", "level2_s", "b", "a_i", "10", "a_f", "6").add(id, "6", "level1_s", "hello4", "level2_s", "b", "a_i", "11", "a_f", "7").add(id, "7", "level1_s", "hello3", "level2_s", "b", "a_i", "12", "a_f", "8").add(id, "8", "level1_s", "hello3", "level2_s", "b", "a_i", "13", "a_f", "9").add(id, "9", "level1_s", "hello0", "level2_s", "b", "a_i", "14", "a_f", "10").commit(cluster.getSolrClient(), COLLECTIONORALIAS);
StreamContext streamContext = new StreamContext();
SolrClientCache solrClientCache = new SolrClientCache();
streamContext.setSolrClientCache(solrClientCache);
try {
SolrParams sParamsA = mapParams("q", "*:*", "fl", "a_i,a_f");
Bucket[] buckets = { new Bucket("level1_s"), new Bucket("level2_s") };
Metric[] metrics = { new SumMetric("a_i"), new CountMetric() };
FieldComparator[] sorts = { new FieldComparator("sum(a_i)", ComparatorOrder.DESCENDING), new FieldComparator("sum(a_i)", ComparatorOrder.DESCENDING) };
FacetStream facetStream = new FacetStream(zkHost, COLLECTIONORALIAS, sParamsA, buckets, metrics, sorts, 100);
facetStream.setStreamContext(streamContext);
List<Tuple> tuples = getTuples(facetStream);
assertEquals(6, tuples.size());
Tuple tuple = tuples.get(0);
String bucket1 = tuple.getString("level1_s");
String bucket2 = tuple.getString("level2_s");
Double sumi = tuple.getDouble("sum(a_i)");
Double count = tuple.getDouble("count(*)");
assertEquals("hello3", bucket1);
assertEquals("b", bucket2);
assertEquals(35, sumi.longValue());
assertEquals(3, count, 0.1);
tuple = tuples.get(1);
bucket1 = tuple.getString("level1_s");
bucket2 = tuple.getString("level2_s");
sumi = tuple.getDouble("sum(a_i)");
count = tuple.getDouble("count(*)");
assertEquals("hello0", bucket1);
assertEquals("b", bucket2);
assertEquals(15, sumi.longValue());
assertEquals(2, count, 0.1);
tuple = tuples.get(2);
bucket1 = tuple.getString("level1_s");
bucket2 = tuple.getString("level2_s");
sumi = tuple.getDouble("sum(a_i)");
count = tuple.getDouble("count(*)");
assertEquals("hello4", bucket1);
assertEquals("b", bucket2);
assertEquals(11, sumi.longValue());
assertEquals(1, count.doubleValue(), 0.1);
tuple = tuples.get(3);
bucket1 = tuple.getString("level1_s");
bucket2 = tuple.getString("level2_s");
sumi = tuple.getDouble("sum(a_i)");
count = tuple.getDouble("count(*)");
assertEquals("hello4", bucket1);
assertEquals("a", bucket2);
assertEquals(4, sumi.longValue());
assertEquals(1, count.doubleValue(), 0.1);
tuple = tuples.get(4);
bucket1 = tuple.getString("level1_s");
bucket2 = tuple.getString("level2_s");
sumi = tuple.getDouble("sum(a_i)");
count = tuple.getDouble("count(*)");
assertEquals("hello3", bucket1);
assertEquals("a", bucket2);
assertEquals(3, sumi.longValue());
assertEquals(1, count.doubleValue(), 0.1);
tuple = tuples.get(5);
bucket1 = tuple.getString("level1_s");
bucket2 = tuple.getString("level2_s");
sumi = tuple.getDouble("sum(a_i)");
count = tuple.getDouble("count(*)");
assertEquals("hello0", bucket1);
assertEquals("a", bucket2);
assertEquals(2, sumi.longValue());
assertEquals(2, count.doubleValue(), 0.1);
sorts[0] = new FieldComparator("level1_s", ComparatorOrder.DESCENDING);
sorts[1] = new FieldComparator("level2_s", ComparatorOrder.DESCENDING);
facetStream = new FacetStream(zkHost, COLLECTIONORALIAS, sParamsA, buckets, metrics, sorts, 100);
facetStream.setStreamContext(streamContext);
tuples = getTuples(facetStream);
assertEquals(6, tuples.size());
tuple = tuples.get(0);
bucket1 = tuple.getString("level1_s");
bucket2 = tuple.getString("level2_s");
sumi = tuple.getDouble("sum(a_i)");
count = tuple.getDouble("count(*)");
assertEquals("hello4", bucket1);
assertEquals("b", bucket2);
assertEquals(11, sumi.longValue());
assertEquals(1, count, 0.1);
tuple = tuples.get(1);
bucket1 = tuple.getString("level1_s");
bucket2 = tuple.getString("level2_s");
sumi = tuple.getDouble("sum(a_i)");
count = tuple.getDouble("count(*)");
assertEquals("hello4", bucket1);
assertEquals("a", bucket2);
assertEquals(4, sumi.longValue());
assertEquals(1, count.doubleValue(), 0.1);
tuple = tuples.get(2);
bucket1 = tuple.getString("level1_s");
bucket2 = tuple.getString("level2_s");
sumi = tuple.getDouble("sum(a_i)");
count = tuple.getDouble("count(*)");
assertEquals("hello3", bucket1);
assertEquals("b", bucket2);
assertEquals(35, sumi.longValue());
assertEquals(3, count.doubleValue(), 0.1);
tuple = tuples.get(3);
bucket1 = tuple.getString("level1_s");
bucket2 = tuple.getString("level2_s");
sumi = tuple.getDouble("sum(a_i)");
count = tuple.getDouble("count(*)");
assertEquals("hello3", bucket1);
assertEquals("a", bucket2);
assertEquals(3, sumi.longValue());
assertEquals(1, count.doubleValue(), 0.1);
tuple = tuples.get(4);
bucket1 = tuple.getString("level1_s");
bucket2 = tuple.getString("level2_s");
sumi = tuple.getDouble("sum(a_i)");
count = tuple.getDouble("count(*)");
assertEquals("hello0", bucket1);
assertEquals("b", bucket2);
assertEquals(15, sumi.longValue());
assertEquals(2, count.doubleValue(), 0.1);
tuple = tuples.get(5);
bucket1 = tuple.getString("level1_s");
bucket2 = tuple.getString("level2_s");
sumi = tuple.getDouble("sum(a_i)");
count = tuple.getDouble("count(*)");
assertEquals("hello0", bucket1);
assertEquals("a", bucket2);
assertEquals(2, sumi.longValue());
assertEquals(2, count.doubleValue(), 0.1);
} finally {
solrClientCache.close();
}
}
use of org.apache.solr.client.solrj.io.stream.metrics.SumMetric in project lucene-solr by apache.
the class StreamingTest method testParallelRollupStream.
@Test
public void testParallelRollupStream() throws Exception {
new UpdateRequest().add(id, "0", "a_s", "hello0", "a_i", "0", "a_f", "1").add(id, "2", "a_s", "hello0", "a_i", "2", "a_f", "2").add(id, "3", "a_s", "hello3", "a_i", "3", "a_f", "3").add(id, "4", "a_s", "hello4", "a_i", "4", "a_f", "4").add(id, "1", "a_s", "hello0", "a_i", "1", "a_f", "5").add(id, "5", "a_s", "hello3", "a_i", "10", "a_f", "6").add(id, "6", "a_s", "hello4", "a_i", "11", "a_f", "7").add(id, "7", "a_s", "hello3", "a_i", "12", "a_f", "8").add(id, "8", "a_s", "hello3", "a_i", "13", "a_f", "9").add(id, "9", "a_s", "hello0", "a_i", "14", "a_f", "10").commit(cluster.getSolrClient(), COLLECTIONORALIAS);
StreamContext streamContext = new StreamContext();
SolrClientCache solrClientCache = new SolrClientCache();
streamContext.setSolrClientCache(solrClientCache);
try {
SolrParams sParamsA = mapParams("q", "*:*", "fl", "a_s,a_i,a_f", "sort", "a_s asc", "partitionKeys", "a_s");
CloudSolrStream stream = new CloudSolrStream(zkHost, COLLECTIONORALIAS, sParamsA);
Bucket[] buckets = { new Bucket("a_s") };
Metric[] metrics = { new SumMetric("a_i"), new SumMetric("a_f"), new MinMetric("a_i"), new MinMetric("a_f"), new MaxMetric("a_i"), new MaxMetric("a_f"), new MeanMetric("a_i"), new MeanMetric("a_f"), new CountMetric() };
RollupStream rollupStream = new RollupStream(stream, buckets, metrics);
ParallelStream parallelStream = parallelStream(rollupStream, new FieldComparator("a_s", ComparatorOrder.ASCENDING));
attachStreamFactory(parallelStream);
parallelStream.setStreamContext(streamContext);
List<Tuple> tuples = getTuples(parallelStream);
assertEquals(3, tuples.size());
//Test Long and Double Sums
Tuple tuple = tuples.get(0);
String bucket = tuple.getString("a_s");
Double sumi = tuple.getDouble("sum(a_i)");
Double sumf = tuple.getDouble("sum(a_f)");
Double mini = tuple.getDouble("min(a_i)");
Double minf = tuple.getDouble("min(a_f)");
Double maxi = tuple.getDouble("max(a_i)");
Double maxf = tuple.getDouble("max(a_f)");
Double avgi = tuple.getDouble("avg(a_i)");
Double avgf = tuple.getDouble("avg(a_f)");
Double count = tuple.getDouble("count(*)");
assertEquals("hello0", bucket);
assertEquals(17, sumi.doubleValue(), 0.001);
assertEquals(18, sumf.doubleValue(), 0.001);
assertEquals(0, mini.doubleValue(), 0.001);
assertEquals(1, minf.doubleValue(), 0.001);
assertEquals(14, maxi.doubleValue(), 0.001);
assertEquals(10, maxf.doubleValue(), 0.001);
assertEquals(4.25, avgi.doubleValue(), 0.001);
assertEquals(4.5, avgf.doubleValue(), 0.001);
assertEquals(4, count.doubleValue(), 0.001);
tuple = tuples.get(1);
bucket = tuple.getString("a_s");
sumi = tuple.getDouble("sum(a_i)");
sumf = tuple.getDouble("sum(a_f)");
mini = tuple.getDouble("min(a_i)");
minf = tuple.getDouble("min(a_f)");
maxi = tuple.getDouble("max(a_i)");
maxf = tuple.getDouble("max(a_f)");
avgi = tuple.getDouble("avg(a_i)");
avgf = tuple.getDouble("avg(a_f)");
count = tuple.getDouble("count(*)");
assertEquals("hello3", bucket);
assertEquals(38, sumi.doubleValue(), 0.001);
assertEquals(26, sumf.doubleValue(), 0.001);
assertEquals(3, mini.doubleValue(), 0.001);
assertEquals(3, minf.doubleValue(), 0.001);
assertEquals(13, maxi.doubleValue(), 0.001);
assertEquals(9, maxf.doubleValue(), 0.001);
assertEquals(9.5, avgi.doubleValue(), 0.001);
assertEquals(6.5, avgf.doubleValue(), 0.001);
assertEquals(4, count.doubleValue(), 0.001);
tuple = tuples.get(2);
bucket = tuple.getString("a_s");
sumi = tuple.getDouble("sum(a_i)");
sumf = tuple.getDouble("sum(a_f)");
mini = tuple.getDouble("min(a_i)");
minf = tuple.getDouble("min(a_f)");
maxi = tuple.getDouble("max(a_i)");
maxf = tuple.getDouble("max(a_f)");
avgi = tuple.getDouble("avg(a_i)");
avgf = tuple.getDouble("avg(a_f)");
count = tuple.getDouble("count(*)");
assertEquals("hello4", bucket);
assertEquals(15, sumi.longValue());
assertEquals(11, sumf.doubleValue(), 0.001);
assertEquals(4, mini.doubleValue(), 0.001);
assertEquals(4, minf.doubleValue(), 0.001);
assertEquals(11, maxi.doubleValue(), 0.001);
assertEquals(7, maxf.doubleValue(), 0.001);
assertEquals(7.5, avgi.doubleValue(), 0.001);
assertEquals(5.5, avgf.doubleValue(), 0.001);
assertEquals(2, count.doubleValue(), 0.001);
} finally {
solrClientCache.close();
}
}
use of org.apache.solr.client.solrj.io.stream.metrics.SumMetric in project lucene-solr by apache.
the class StreamingTest method testStatsStream.
@Test
public void testStatsStream() throws Exception {
new UpdateRequest().add(id, "0", "a_s", "hello0", "a_i", "0", "a_f", "1").add(id, "2", "a_s", "hello0", "a_i", "2", "a_f", "2").add(id, "3", "a_s", "hello3", "a_i", "3", "a_f", "3").add(id, "4", "a_s", "hello4", "a_i", "4", "a_f", "4").add(id, "1", "a_s", "hello0", "a_i", "1", "a_f", "5").add(id, "5", "a_s", "hello3", "a_i", "10", "a_f", "6").add(id, "6", "a_s", "hello4", "a_i", "11", "a_f", "7").add(id, "7", "a_s", "hello3", "a_i", "12", "a_f", "8").add(id, "8", "a_s", "hello3", "a_i", "13", "a_f", "9").add(id, "9", "a_s", "hello0", "a_i", "14", "a_f", "10").commit(cluster.getSolrClient(), COLLECTIONORALIAS);
StreamContext streamContext = new StreamContext();
SolrClientCache solrClientCache = new SolrClientCache();
streamContext.setSolrClientCache(solrClientCache);
try {
SolrParams sParamsA = mapParams("q", "*:*");
Metric[] metrics = { new SumMetric("a_i"), new SumMetric("a_f"), new MinMetric("a_i"), new MinMetric("a_f"), new MaxMetric("a_i"), new MaxMetric("a_f"), new MeanMetric("a_i"), new MeanMetric("a_f"), new CountMetric() };
StatsStream statsStream = new StatsStream(zkHost, COLLECTIONORALIAS, sParamsA, metrics);
statsStream.setStreamContext(streamContext);
List<Tuple> tuples = getTuples(statsStream);
assertEquals(1, tuples.size());
//Test Long and Double Sums
Tuple tuple = tuples.get(0);
Double sumi = tuple.getDouble("sum(a_i)");
Double sumf = tuple.getDouble("sum(a_f)");
Double mini = tuple.getDouble("min(a_i)");
Double minf = tuple.getDouble("min(a_f)");
Double maxi = tuple.getDouble("max(a_i)");
Double maxf = tuple.getDouble("max(a_f)");
Double avgi = tuple.getDouble("avg(a_i)");
Double avgf = tuple.getDouble("avg(a_f)");
Double count = tuple.getDouble("count(*)");
assertEquals(70, sumi.longValue());
assertEquals(55.0, sumf.doubleValue(), 0.01);
assertEquals(0.0, mini.doubleValue(), 0.01);
assertEquals(1.0, minf.doubleValue(), 0.01);
assertEquals(14.0, maxi.doubleValue(), 0.01);
assertEquals(10.0, maxf.doubleValue(), 0.01);
assertEquals(7.0, avgi.doubleValue(), .01);
assertEquals(5.5, avgf.doubleValue(), .001);
assertEquals(10, count.doubleValue(), .01);
} finally {
solrClientCache.close();
}
}
Aggregations