[ https://issues.apache.org/jira/browse/SOLR-14481?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Joel Bernstein updated SOLR-14481: ---------------------------------- Description: This ticket will add the *drill* Streaming Expression. The drill Streaming Expression is a wrapper around the functionality that is described in SOLR-14470. The idea is for drill to contact the /export handler on one replica in each shard of a collection and pass four parameters: * q: query * fl: field list * sort: sort spec * expr: The Streaming Expression sent to the /export handler to be executed. The export handler will pass the result set through the streaming expression performing an aggregation on the sorted result set and return the aggregated tuples. The drill expression will simply maintain the sort order of the tuples and emit them so that a wrapper expression can perform operations on the sorted aggregate tuples. Sample syntax: {code:java} drill(collection1, q="*:*", fl="a,b,c", sort="a desc, b desc", rollup(input(), over="a,b", sum(c))) {code} In order to finish the aggregation other expressions can be used: {code:java} rollup( select( drill(collection1, q="*:*", fl="a,b,c", sort="a desc, b desc", rollup(input(), over="a,b", sum(c))), a, b, sum(c) as sums), over="a, b", sum(sums)) {code} This provides fast aggregation over fields with infinite cardinality by pushing down the first level of aggregation into the /export handler. was: This ticket will add the *drill* Streaming Expression. The drill Streaming Expression is a wrapper around the functionality that is described in SOLR-14470. The idea is for drill to contact the /export handler on one replica in each shard of a collection and pass four parameters: * q: query * fl: field list * sort: sort spec * bit: The "drill bit" is the Streaming Expression sent to the /export handler to be executed. The export handler will pass the result set through the streaming expression performing an aggregation on the sorted result set and return the aggregated tuples. The drill expression will simply maintain the sort order of the tuples and emit them so that a wrapper expression can perform operations on the sorted aggregate tuples. Sample syntax: {code:java} drill(collection1, q="*:*", fl="a,b,c", sort="a desc, b desc", bit=rollup(input(), over="a,b", sum(c))) {code} In order to finish the aggregation other expressions can be used: {code:java} rollup( select( drill(collection1, q="*:*", fl="a,b,c", sort="a desc, b desc", bit=rollup(input(), over="a,b", sum(c))), a, b, sum(c) as sums), over="a, b", sum(sums)) {code} This provides fast aggregation over fields with infinite cardinality by pushing down the first level of aggregation into the /export handler. > Add drill Streaming Expression > ------------------------------ > > Key: SOLR-14481 > URL: https://issues.apache.org/jira/browse/SOLR-14481 > Project: Solr > Issue Type: New Feature > Components: streaming expressions > Reporter: Joel Bernstein > Assignee: Joel Bernstein > Priority: Major > Attachments: SOLR-14481.patch > > > This ticket will add the *drill* Streaming Expression. The drill Streaming > Expression is a wrapper around the functionality that is described in > SOLR-14470. The idea is for drill to contact the /export handler on one > replica in each shard of a collection and pass four parameters: > * q: query > * fl: field list > * sort: sort spec > * expr: The Streaming Expression sent to the /export handler to be executed. > The export handler will pass the result set through the streaming expression > performing an aggregation on the sorted result set and return the aggregated > tuples. The drill expression will simply maintain the sort order of the > tuples and emit them so that a wrapper expression can perform operations on > the sorted aggregate tuples. > Sample syntax: > {code:java} > drill(collection1, q="*:*", fl="a,b,c", sort="a desc, b desc", > rollup(input(), over="a,b", sum(c))) {code} > In order to finish the aggregation other expressions can be used: > {code:java} > rollup( > select( > drill(collection1, > q="*:*", > fl="a,b,c", > sort="a desc, b desc", > rollup(input(), over="a,b", sum(c))), > a, > b, > sum(c) as sums), > over="a, b", > sum(sums)) > > {code} > This provides fast aggregation over fields with infinite cardinality by > pushing down the first level of aggregation into the /export handler. > > -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For additional commands, e-mail: issues-h...@lucene.apache.org