You are here

final public function SearchApiMultiQuery::execute in Search API Multi-Index Searches 7

Implements SearchApiMultiQueryInterface::execute().

Uses a server's searchMultiple() method, where possible.

Overrides SearchApiMultiQueryInterface::execute

File

./search_api_multi.query.inc, line 681

Class

SearchApiMultiQuery
Standard implementation of SearchApiMultiQueryInterface.

Code

public final function execute() {
  $start = microtime(TRUE);

  // Call pre-execute hook.
  $this
    ->preExecute();

  // Let modules alter the query.
  drupal_alter('search_api_multi_query', $this);
  $pre_search = microtime(TRUE);

  // Execute query.
  if (count($this->servers) == 1) {
    $server = search_api_server_load(key($this->servers));
    if ($server && $server
      ->supportsFeature('search_api_multi')) {
      $response = $server
        ->searchMultiple($this);
    }
  }
  if (!isset($response)) {
    $response = $this
      ->searchMultiple();
  }
  $post_search = microtime(TRUE);

  // Call post-execute hook.
  $this
    ->postExecute($response);
  $end = microtime(TRUE);
  $response['performance']['complete'] = $end - $start;
  $response['performance']['hooks'] = $response['performance']['complete'] - ($post_search - $pre_search);

  // Store search for later retrieval for facets, etc.
  search_api_multi_current_search(NULL, $this, $response);
  return $response;
}