You are here

function search_api_glossary_search_api_solr_documents_alter in Search API AZ Glossary 7

Same name and namespace in other branches
  1. 7.3 search_api_glossary.module \search_api_glossary_search_api_solr_documents_alter()
  2. 7.2 search_api_glossary.module \search_api_glossary_search_api_solr_documents_alter()

Alter Solr documents before they are sent to Solr for indexing.

Parameters

array $documents: An array of SearchApiSolrDocument objects ready to be indexed, generated from $items array.

SearchApiIndex $index: The search index for which items are being indexed.

array $items: An array of items being indexed.

File

./search_api_glossary.module, line 79
Search api glossary module file.

Code

function search_api_glossary_search_api_solr_documents_alter(array &$documents, SearchApiIndex $index, array $items) {
  $searcher = 'search_api@' . $index->machine_name;
  $fields = _search_api_glossary_get_field();
  $field_names = $index
    ->server()
    ->getFieldNames($index);
  foreach ($fields as $field) {
    if ($facet = facetapi_facet_load($field, $searcher)) {
      $adapter = facetapi_adapter_load($searcher);
      $facet_settings = $adapter
        ->getFacetSettingsGlobal($facet);
      $field_key = $facet['field'] . '_field';
      if (!empty($facet_settings->settings[$field_key])) {
        $source_field_key = $facet_settings->settings[$field_key];
        foreach ($documents as $document) {
          $source_field = $document
            ->getField($source_field_key);
          $value = '';
          if (is_string($source_field['value']) && drupal_strlen($source_field['value']) > 0) {
            $first_letter = strtoupper($source_field['value'][0]);
            $value = search_api_glossary_getter_helper($first_letter);
          }
          $document
            ->setField($field_names[$field], $value);
        }
      }
    }
  }
}