예제 #1
0
class AbstractSolrUpdater(metaclass=ABCMeta):
    """
    Receive an item like a Twitter tweet, a Facebook post, a Dropbox file, etc., convert it to
    a document and send it to Solr.

    Parameters:
    bearertoken_id -- a `models.BearerToken.id`.
    """
    def __init__(self, bearertoken_id):
        self.bearertoken_id = bearertoken_id
        self.solr = Solr(self.CORE_NAME)

    def add(self, redis_entry, commit=False):
        doc = self._convert_redis_entry_to_solr_doc(redis_entry)

        self.solr.update([doc], 'json', commit)

    def commit(self):
        self.solr.commit()

    @abstractmethod
    def _convert_redis_entry_to_solr_doc(self, redis_entry):
        pass