[ https://issues.apache.org/jira/browse/SOLR-4465?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13787784#comment-13787784 ]
Joel Bernstein commented on SOLR-4465: -------------------------------------- Prabha, This patch is no longer under development. Part of the functionality has been split into smaller tickets, SOLR-5027 and SOLR-5047, which are still in development. Take a look at Solr grouping (http://wiki.apache.org/solr/FieldCollapsing) and the stats component (http://wiki.apache.org/solr/StatsComponent) which are available now and sound like they may meet your needs. > Configurable Collectors > ----------------------- > > Key: SOLR-4465 > URL: https://issues.apache.org/jira/browse/SOLR-4465 > Project: Solr > Issue Type: New Feature > Components: search > Affects Versions: 4.1 > Reporter: Joel Bernstein > Fix For: 4.6 > > Attachments: SOLR-4465.patch, SOLR-4465.patch, SOLR-4465.patch, > SOLR-4465.patch, SOLR-4465.patch, SOLR-4465.patch, SOLR-4465.patch, > SOLR-4465.patch, SOLR-4465.patch, SOLR-4465.patch, SOLR-4465.patch, > SOLR-4465.patch, SOLR-4465.patch, SOLR-4465.patch, SOLR-4465.patch, > SOLR-4465.patch, SOLR-4465.patch > > > This ticket provides a patch to add pluggable collectors to Solr. This patch > was generated and tested with Solr 4.1. > This is how the patch functions: > Collectors are plugged into Solr in the solconfig.xml using the new > collectorFactory element. For example: > <collectorFactory name="default" class="solr.CollectorFactory"/> > <collectorFactory name="sum" class="solr.SumCollectorFactory"/> > The elements above define two collector factories. The first one is the > "default" collectorFactory. The class attribute points to > org.apache.solr.handler.component.CollectorFactory, which implements logic > that returns the default TopScoreDocCollector and TopFieldCollector. > To create your own collectorFactory you must subclass the default > CollectorFactory and at a minimum override the getCollector method to return > your new collector. > The parameter "cl" turns on pluggable collectors: > cl=true > If cl is not in the parameters, Solr will automatically use the default > collectorFactory. > *Pluggable Doclist Sorting With the Docs Collector* > You can specify two types of pluggable collectors. The first type is the docs > collector. For example: > cl.docs=<name> > The above param points to a named collectorFactory in the solrconfig.xml to > construct the collector. The docs collectorFactorys must return a collector > that extends the TopDocsCollector base class. Docs collectors are responsible > for collecting the doclist. > You can specify only one docs collector per query. > You can pass parameters to the docs collector using local params syntax. For > example: > cl.docs=\{! sort=mycustomesort\}mycollector > If cl=true and a docs collector is not specified, Solr will use the default > collectorFactory to create the docs collector. > *Pluggable Custom Analytics With Delegating Collectors* > You can also specify any number of custom analytic collectors with the > "cl.analytic" parameter. Analytic collectors are designed to collect > something else besides the doclist. Typically this would be some type of > custom analytic. For example: > cl.analytic=sum > The parameter above specifies a analytic collector named sum. Like the docs > collectors, "sum" points to a named collectorFactory in the solrconfig.xml. > You can specificy any number of analytic collectors by adding additional > cl.analytic parameters. > Analytic collector factories must return Collector instances that extend > DelegatingCollector. > A sample analytic collector is provided in the patch through the > org.apache.solr.handler.component.SumCollectorFactory. > This collectorFactory provides a very simple DelegatingCollector that groups > by a field and sums a column of floats. The sum collector is not designed to > be a fully functional sum function but to be a proof of concept for pluggable > analytics through delegating collectors. > You can send parameters to analytic collectors with solr local param syntax. > For example: > cl.analytic=\{! id=1 groupby=field1 column=field2\}sum > The "id" parameter is mandatory for analytic collectors and is used to > identify the output from the collector. In this example the "groupby" and > "column" params tell the sum collector which field to group by and sum. > Analytic collectors are passed a reference to the ResponseBuilder and can > place maps with analytic output directory into the SolrQueryResponse with the > add() method. > Maps that are placed in the SolrQueryResponse are automatically added to the > outgoing response. The response will include a list named cl.analytic.<id>, > where id is specified in the local param. > *Distributed Search* > The CollectorFactory also has a method called merge(). This method aggregates > the results from each of the shards during distributed search. The "default" > CollectoryFactory implements the default merge logic for merging documents > from each shard. If you define a different docs collector you can override > the default merge method to merge documents in accordance with how they are > collected at the shard level. > With analytic collectors, you'll need to override the merge method to merge > the analytic output from the shards. An example of how this works is provided > in the SumCollectorFactory. > Each collectorFactory, that is specified in the http parameters, will have > its merge method applied by the Solr aggregator node. > *Testing the Patch With Sample Data* > 1) Apply patch to Solr 4.1 > 2) Load sample data > 3) Send the http command: > http://localhost:8983/solr/select?q=*:*&cl=true&facet=true&facet.field=manu_id_s&cl.analytic=%7B!+id=%271%27+groupby=%27manu_id_s%27+column=%27price%27%7Dsum > -- This message was sent by Atlassian JIRA (v6.1#6144) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org