Python Index Slicing implementation
    def __getitem__(self, key):
        """
        Basic slicing support up to 100 (QueryManager.BATCH_DEFAULT_SIZE)
        https://docs.python.org/3/reference/datamodel.html#object.__getitem__
        This is just quick way to get samples items, as it works only for the initial batch of results. 
        
        Use the next() method to go through all the resultset.
        """
        if isinstance( key, slice ) :
            #Get the start, stop, and step from the slice
            return [self.model(payload=self.hits[ii]) for ii in xrange(*key.indices(self.hits_total))]
        elif isinstance( key, int ) :
            if key < self.hits_total:
                return self.model(payload=self.hits[key])
            else:
                printDebug("Slicing should be used only for sampling first batch of records (max 100). Use next() method instead.")
                raise IndexError, "The index (%d) is out of range."%key
        else:
            raise TypeError, "Invalid argument type."