def add_key(self, attributes, store_key):
        """Add key to the index.

        :param attributes: Attributes to be added to the index
        :type attributes: dict(str)
        :param store_key: The key for the document in the store
        :type store_key: str

        """
        undefined = False
        try:
            value = self.get_value(attributes)
        except (KeyError, IndexError):
            undefined = True

        # We remove old values in _reverse_index
        self.remove_key(store_key)
        if not undefined:
            if isinstance(value, (list,tuple)):
                # We add an extra hash value for the list itself
                # (this allows for querying the whole list)
                values = value
                hash_value = self.get_hash_for(value)
                self.add_hashed_value(hash_value, store_key)
            else:
                values = [value]

            for value in values:
                hash_value = self.get_hash_for(value)
                self.add_hashed_value(hash_value, store_key)
        else:
            self.add_undefined(store_key)
Add key to the index.

        :param attributes: Attributes to be added to the index
        :type attributes: dict(str)
        :param store_key: The key for the document in the store
        :type store_key: str