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.
  • Field Details

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