You are here

function apachesolr_batch_index_nodes in Apache Solr Search 6.2

Batch Operation Callback

1 string reference to 'apachesolr_batch_index_nodes'
apachesolr_batch_index_remaining in ./apachesolr.admin.inc
Submit a batch job to index the remaining, unindexed content.

File

./apachesolr.admin.inc, line 846
Administrative pages for the Apache Solr framework.

Code

function apachesolr_batch_index_nodes(&$context) {
  if (empty($context['sandbox'])) {
    try {

      // Get the $solr object
      $solr = apachesolr_get_solr();

      // If there is no server available, don't continue.
      if (!$solr
        ->ping()) {
        throw new Exception(t('No Solr instance available during indexing.'));
      }
    } catch (Exception $e) {
      watchdog('Apache Solr', $e
        ->getMessage(), NULL, WATCHDOG_ERROR);
      return FALSE;
    }
    $status = apachesolr_index_status('apachesolr_search');
    $context['sandbox']['progress'] = 0;
    $context['sandbox']['max'] = $status['remaining'];
  }

  // We can safely process the apachesolr_cron_limit nodes at a time without a
  // timeout or out of memory error.
  $limit = variable_get('apachesolr_cron_limit', 50);

  // With each pass through the callback, retrieve the next group of nids.
  $rows = apachesolr_get_nodes_to_index('apachesolr_search', $limit);
  apachesolr_index_nodes($rows, 'apachesolr_search');
  $context['sandbox']['progress'] += count($rows);
  $context['message'] = t('Indexed @current of @total nodes', array(
    '@current' => $context['sandbox']['progress'],
    '@total' => $context['sandbox']['max'],
  ));

  // Inform the batch engine that we are not finished, and provide an
  // estimation of the completion level we reached.
  $context['finished'] = empty($context['sandbox']['max']) ? 1 : $context['sandbox']['progress'] / $context['sandbox']['max'];

  // Put the total into the results section when we're finished so we can
  // show it to the admin.
  if ($context['finished']) {
    $context['results']['count'] = $context['sandbox']['progress'];
  }
}