Class 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.
    • Constructor Detail

      • DocRouter

        public DocRouter()
    • Method Detail

      • getDocRouter

        public static DocRouter getDocRouter​(String routerName)
      • 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.
      • 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).
      • 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.