Class GutmanSplitStrategy

java.lang.Object
org.apache.druid.collections.spatial.split.GutmanSplitStrategy
All Implemented Interfaces:
SplitStrategy
Direct Known Subclasses:
LinearGutmanSplitStrategy

public abstract class GutmanSplitStrategy extends Object implements SplitStrategy
  • Constructor Details

    • GutmanSplitStrategy

      protected GutmanSplitStrategy(int minNumChildren, int maxNumChildren, BitmapFactory b)
  • Method Details

    • needToSplit

      public boolean needToSplit(Node node)
      Specified by:
      needToSplit in interface SplitStrategy
    • split

      public Node[] split(Node node)
      This algorithm is from the original paper. Algorithm Split. Divide a set of M+1 index entries into two groups. S1. [Pick first entry for each group]. Apply Algorithm pickSeeds(List) to choose two entries to be the first elements of the groups. Assign each to a group. S2. [Check if done]. If all entries have been assigned, stop. If one group has so few entries that all the rest must be assigned to it in order for it to have the minimum number m, assign them and stop. S3. [Select entry to assign]. Invoke Algorithm pickNext(List) to choose the next entry to assign. Add it to the group whose covering rectangle will have to be enlarged least to accommodate it. Resolve ties by adding the entry to the group smaller area, then to the one with fewer entries, then to either. Repeat from S2.
      Specified by:
      split in interface SplitStrategy
    • pickSeeds

      public abstract Node[] pickSeeds(List<Node> nodes)
    • pickNext

      public abstract Node pickNext(List<Node> nodes)