You are here

function apachesolr_multisitesearch_generate_metadata in Apache Solr Multisite Search 7

Same name and namespace in other branches
  1. 6.3 apachesolr_multisitesearch.index.inc \apachesolr_multisitesearch_generate_metadata()

Create a document to send to the index that contains useful information regarding the website.

Return value

ApacheSolrDocument

1 call to apachesolr_multisitesearch_generate_metadata()
apachesolr_multisitesearch_update_metadata in ./apachesolr_multisitesearch.index.inc
Creation of update of the metadata

File

./apachesolr_multisitesearch.index.inc, line 26

Code

function apachesolr_multisitesearch_generate_metadata() {
  $document = new ApacheSolrDocument();
  $document->id = apachesolr_document_id(1, 'multisite.metadata');
  $document->site = url(NULL, array(
    'absolute' => TRUE,
  ));
  $document->hash = apachesolr_site_hash();
  $document->entity_id = 1;
  $document->entity_type = 'multisite.meta';
  $document->ss_multisite_meta_sitename = variable_get('site_name', 'Drupal');

  // Only refresh for the default environment
  $env_id = apachesolr_default_environment();

  // Add bundle information to our metadata
  foreach (entity_get_info() as $entity_type => $info) {

    // We index each name as a string for cross-site faceting
    foreach ($info['bundles'] as $bundle => $bundle_info) {
      if (!empty($bundle_info['apachesolr']['index'])) {
        $document
          ->setMultiValue('sm_multisite_meta_bundles', $bundle_info['label']);
      }
    }
  }

  // Add taxonomy to our metadata
  if (module_exists('taxonomy')) {
    module_load_include('inc', 'apachesolr', 'apachesolr.index');
    $vocabs = taxonomy_get_vocabularies();
    foreach ($vocabs as $vid => $vocab) {

      // We index each name as a string for cross-site faceting
      // using the vocab name rather than vid in field construction.
      $document
        ->setMultiValue('sm_multisite_meta_taxonomy', apachesolr_vocab_name($vid));
    }
  }

  // Allow alterations to this meta data
  drupal_alter('apachesolr_multisitesearch_metadata', $document);
  return $document;
}