org.apache.solr.common.cloud

## Class DocRouter

- java.lang.Object
- - org.apache.solr.common.cloud.DocRouter

Direct Known Subclasses:
  HashBasedRouter, ImplicitDocRouter

    public abstract class DocRouter
    extends Object

Class to partition int range into n ranges.

WARNING: This API is experimental and might change in incompatible ways in the next release.

### Nested Class Summary

Nested Classes
`static class` `DocRouter.Range`

### Field Summary

Fields
`static DocRouter` `DEFAULT`
`static String` `DEFAULT_NAME`

### Constructor Summary

Constructors
Constructor and Description
`DocRouter()`

### Method Summary

Methods
`DocRouter.Range` `fromString(String range)`
`DocRouter.Range` `fullRange()`
`static DocRouter` `getDocRouter(Object routerName)`
`protected String` `getRouteField(DocCollection coll)`
`static Map<String,Object>` `getRouterSpec(ZkNodeProps props)`
`Collection<Slice>` `getSearchSlices(String shardKeys, SolrParams params, DocCollection collection)` This method is consulted to determine what slices should be queried for a request when an explicit shards parameter was not used.
`abstract Collection<Slice>` `getSearchSlicesSingle(String shardKey, SolrParams params, DocCollection collection)` This method is consulted to determine what slices should be queried for a request when an explicit shards parameter was not used.
`abstract Slice` `getTargetSlice(String id, SolrInputDocument sdoc, SolrParams params, DocCollection collection)` Returns the Slice that the document should reside on, or null if there is not enough information
`abstract boolean` `isTargetSlice(String id, SolrInputDocument sdoc, SolrParams params, String shardId, DocCollection collection)`
`List<DocRouter.Range>` `partitionRange(int partitions, DocRouter.Range range)` Returns the range for each partition

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### DEFAULT_NAME

    public static final String DEFAULT_NAME

See Also:
  Constant Field Values

#### DEFAULT

    public static final DocRouter DEFAULT

### Constructor Detail

#### DocRouter

    public DocRouter()

### Method Detail

#### getDocRouter

    public static DocRouter getDocRouter(Object routerName)

#### getRouteField

    protected String getRouteField(DocCollection coll)

#### getRouterSpec

    public static Map<String,Object> getRouterSpec(ZkNodeProps props)

#### fromString

    public DocRouter.Range fromString(String range)

#### fullRange

    public DocRouter.Range fullRange()

#### partitionRange

    public List<DocRouter.Range> partitionRange(int partitions,
                                       DocRouter.Range range)

Returns the range for each partition

#### getTargetSlice

    public abstract Slice getTargetSlice(String id,
                       SolrInputDocument sdoc,
                       SolrParams params,
                       DocCollection collection)

Returns the Slice that the document should reside on, or null if there is not enough information

#### getSearchSlicesSingle

    public abstract Collection<Slice> getSearchSlicesSingle(String shardKey,
                                          SolrParams params,
                                          DocCollection collection)

This method is consulted to determine what slices should be queried for a request when an explicit shards parameter was not used. This method only accepts a single shard key (or null). If you have a comma separated list of shard keys, call getSearchSlices

#### isTargetSlice

    public abstract boolean isTargetSlice(String id,
                        SolrInputDocument sdoc,
                        SolrParams params,
                        String shardId,
                        DocCollection collection)

#### getSearchSlices

    public Collection<Slice> getSearchSlices(String shardKeys,
                                    SolrParams params,
                                    DocCollection collection)

This method is consulted to determine what slices should be queried for a request when an explicit shards parameter was not used. This method accepts a multi-valued shardKeys parameter (normally comma separated from the shard.keys request parameter) and aggregates the slices returned by getSearchSlicesSingle for each shardKey.