public function SearchApiSearchService::search in Fast Autocomplete 7
Implements SearchServiceInterface::search().
Parameters
string $key: The key to use in the search.
string $language: The language to use in the search.
Return value
array The results array containing the resulting nids.
Overrides AbstractSearchService::search
File
- src/SearchService/ SearchApiSearchService.php, line 21 
Class
- SearchApiSearchService
- Fast Autocomplete backend service class providing Search API search.
Namespace
Drupal\fac\SearchServiceCode
public function search($key, $language) {
  $result = array();
  $settings = variable_get('fac_backend_service_settings', array());
  // Load the index and get the limit on results.
  $index = search_api_index_load($settings['index_id']);
  $limit = isset($settings['number_of_results']) ? $settings['number_of_results'] : 5;
  // Build the Search API query.
  $query = new \SearchApiQuery($index, array(
    'limit' => $limit,
    'conjunction' => isset($settings['conjunction']) ? $settings['conjunction'] : 'OR',
  ));
  // Add the keys and sort descending by relevance.
  $query
    ->keys($key)
    ->sort('search_api_relevance', 'DESC');
  $fields = isset($settings['full_text_fields']) ? $settings['full_text_fields'] : '';
  if (!empty($fields)) {
    $query
      ->fields($fields);
  }
  $indexed_fields = $index
    ->getFields();
  if (isset($indexed_fields['language'])) {
    $filter = $query
      ->createFilter('OR');
    $filter
      ->condition('language', $language, '=');
    $filter
      ->condition('language', LANGUAGE_NONE, '=');
    $query
      ->filter($filter);
  }
  if (!empty($settings['bundles']) && isset($indexed_fields['type'])) {
    $filter = $query
      ->createFilter('OR');
    foreach ($settings['bundles'] as $bundle) {
      $filter
        ->condition('type', $bundle, '=');
    }
    $query
      ->filter($filter);
  }
  // Allow other modules to modify the query.
  drupal_alter('fac_search_api_search_query', $query);
  $search_results = $query
    ->execute();
  $etids = array_keys($search_results['results']);
  // Build up the result array.
  foreach ($etids as $etid) {
    $result['items'][] = array(
      'entity_type' => $index->item_type,
      'etid' => $etid,
    );
  }
  return $result;
}