def METHOD_NAME(self, name, config):
    """Entry point for the analyzer.
    Returns:
        String with summary of the analyzer result.
    """
    event_field_name = config.get("event_field_name")
    bq_query = config.get("bq_query")
    bq_project = config.get("bq_project")
    tags = config.get("tags")
    emoji_names = config.get("emojis")
    emojis_to_add = [emojis.get_emoji(x) for x in emoji_names]
    es_query = (
        '{"query": { "bool": { "should": [ '
        '{ "exists" : { "field" : "' + event_field_name + '" }} ] } } }'
    )
    events_stream = self.event_stream(
        query_dsl=es_query,
        return_fields=[event_field_name],
    )
    events = {}
    for event in events_stream:
        field = event.source.get(event_field_name)
        events.setdefault(field, []).append(event)
    try:
        bq_client = bigquery.Client(project=bq_project)
    except google_auth_exceptions.DefaultCredentialsError as exception:
        return "Could not authenticate to BigQuery: {0!s}".format(exception)
    num_matches = 0
    for i in range(0, len(events), self._BQ_BATCH_SIZE):
        batch = list(itertools.islice(events, i, i + self._BQ_BATCH_SIZE))
        query_job = self.bigquery_match(
            bq_client, bq_query, event_field_name, batch
        )
        for row in query_job:
            for event in events[row[0]]:
                event.add_tags(tags)
                event.add_emojis(emojis_to_add)
                event.commit()
                num_matches += 1
    return ("{0:d} events found for matcher [{1:s}]").format(num_matches, name)