Class AdaptiveSortTileRecursiveBulkSplit

  • All Implemented Interfaces:
    BulkSplit

    public class AdaptiveSortTileRecursiveBulkSplit
    extends AbstractBulkSplit
    This is variation of the original STR bulk load for non-rectangular data spaces. Instead of iterating through the dimensions and splitting each by (approximately) the same factor, this variation tries to adjust the factor to the extends of the data space. I.e. if the data set is twice as wide as high, this should produce twice as many partitions on the X than on the Y axis. Whether or not this offers benefits greatly depends on the distance queries used. But for symmetric distances, the resulting pages should be more rectangular, which often is beneficial. See SortTileRecursiveBulkSplit for the original STR bulk load.
    Since:
    0.6.0
    Author:
    Erich Schubert
    • Constructor Detail

      • AdaptiveSortTileRecursiveBulkSplit

        public AdaptiveSortTileRecursiveBulkSplit()
    • Method Detail

      • partition

        public <T extends SpatialComparable> java.util.List<java.util.List<T>> partition​(java.util.List<T> spatialObjects,
                                                                                         int minEntries,
                                                                                         int maxEntries)
        Description copied from interface: BulkSplit
        Partitions the specified feature vectors
        Type Parameters:
        T - actual type we split
        Parameters:
        spatialObjects - the spatial objects to be partitioned
        minEntries - the minimum number of entries in a partition
        maxEntries - the maximum number of entries in a partition
        Returns:
        the partition of the specified spatial objects
      • strPartition

        protected <T extends SpatialComparable> void strPartition​(java.util.List<T> objs,
                                                                  int start,
                                                                  int end,
                                                                  int depth,
                                                                  int dims,
                                                                  int maxEntries,
                                                                  SpatialSingleMeanComparator c,
                                                                  java.util.List<java.util.List<T>> ret)
        Recursively partition.
        Type Parameters:
        T - data type
        Parameters:
        objs - Object list
        start - Subinterval start
        end - Subinterval end
        depth - Iteration depth (must be less than dimensionality!)
        dims - Total number of dimensions
        maxEntries - Maximum page size
        c - Comparison helper
        ret - Output list