'A shortcut method to perform an autocomplete search.
Must be run against fields that are either ``NgramField`` or
``EdgeNgramField``.'

def autocomplete(self, **kwargs):

    clone = self._clone()
    query_bits = []
    for (field_name, query) in kwargs.items():
        for word in query.split(u'    '):
            bit = clone.query.clean(word.strip())
            if bit:
                kwargs = {field_name: bit}
                query_bits.append(SQ(**kwargs))
    return clone.filter(six.moves.reduce(operator.__and__, query_bits))
