Package 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
Modifier and Type
Class
Description
`static class`
`DocRouter.Range`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final DocRouter`
`DEFAULT`
`static final String`
`DEFAULT_NAME`

## Constructor Summary

Constructors
Constructor
Description
`DocRouter()`

## Method Summary

Modifier and Type
Method
Description
`DocRouter.Range`
`fromString(String range)`
`DocRouter.Range`
`fullRange()`
`static DocRouter`
`getDocRouter(String routerName)`
`abstract String`
`getName()`
`String`
`getRouteField(DocCollection coll)`
`static Map<String,Object>`
`getRouterSpec(ZkNodeProps props)`
`DocRouter.Range`
`getSearchRangeSingle(String shardKey, SolrParams params, DocCollection collection)`
This method is consulted to determine what search range (the part of the hash ring) should be queried for a request when an explicit shards' parameter was not used.
`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, String route, 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)`
Split the range into partitions.
`List<DocRouter.Range>`
`partitionRange(int partitions, DocRouter.Range range, float fuzz)`
Split the range into partitions with inexact sizes.

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

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

## Field Details

### DEFAULT_NAME

public static final String DEFAULT_NAME

See Also:
  - Constant Field Values

### DEFAULT

public static final DocRouter DEFAULT

## Constructor Details

### DocRouter

public DocRouter()

## Method Details

### getDocRouter

public static DocRouter getDocRouter(String routerName)

### getRouteField

public 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)
Split the range into partitions.

Parameters:
  `partitions` - number of partitions
  `range` - range to split

### partitionRange

public List<DocRouter.Range> partitionRange(int partitions, DocRouter.Range range, float fuzz)
Split the range into partitions with inexact sizes.

Parameters:
  `partitions` - number of partitions
  `range` - range to split
  `fuzz` - value between 0 (inclusive) and 0.5 (exclusive) indicating inexact split, i.e. percentage of variation in resulting ranges - odd ranges will be larger and even ranges will be smaller by up to that percentage.

### getTargetSlice

public abstract Slice getTargetSlice(String id, SolrInputDocument sdoc, String route, 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

### getSearchRangeSingle

public DocRouter.Range getSearchRangeSingle(String shardKey, SolrParams params, DocCollection collection)
This method is consulted to determine what search range (the part of the hash ring) should be queried for a request when an explicit shards' parameter was not used. This method only accepts a single shard key (or null).

### isTargetSlice

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

### getName

public abstract String getName()

### 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.