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 DocRouter
DEFAULT
static String
DEFAULT_NAME
-
Constructor Summary
Constructors Constructor Description DocRouter()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 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 informationabstract 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.
-
-
-
Field Detail
-
DEFAULT_NAME
public static final String DEFAULT_NAME
- See Also:
- Constant Field Values
-
DEFAULT
public static final DocRouter DEFAULT
-
-
Method Detail
-
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 partitionsrange
- 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 partitionsrange
- range to splitfuzz
- 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.
-
-