You are here

public function SearchApiSolrBackend::getBackendDefinedFields in Search API Solr 4.x

Same name and namespace in other branches
  1. 8.3 src/Plugin/search_api/backend/SearchApiSolrBackend.php \Drupal\search_api_solr\Plugin\search_api\backend\SearchApiSolrBackend::getBackendDefinedFields()
  2. 8 src/Plugin/search_api/backend/SearchApiSolrBackend.php \Drupal\search_api_solr\Plugin\search_api\backend\SearchApiSolrBackend::getBackendDefinedFields()
  3. 8.2 src/Plugin/search_api/backend/SearchApiSolrBackend.php \Drupal\search_api_solr\Plugin\search_api\backend\SearchApiSolrBackend::getBackendDefinedFields()

Throws

\Drupal\search_api\SearchApiException

1 call to SearchApiSolrBackend::getBackendDefinedFields()
SearchApiSolrBackend::extractResults in src/Plugin/search_api/backend/SearchApiSolrBackend.php
Extract results from a Solr response.

File

src/Plugin/search_api/backend/SearchApiSolrBackend.php, line 4481

Class

SearchApiSolrBackend
Apache Solr backend for search api.

Namespace

Drupal\search_api_solr\Plugin\search_api\backend

Code

public function getBackendDefinedFields(IndexInterface $index) {
  $backend_defined_fields = [];
  foreach ($index
    ->getFields() as $field) {
    if ($field
      ->getType() === 'location') {
      $distance_field_name = $field
        ->getFieldIdentifier() . '__distance';
      $property_path_name = $field
        ->getPropertyPath() . '__distance';
      $distance_field = new Field($index, $distance_field_name);
      $distance_field
        ->setLabel($field
        ->getLabel() . ' (distance)');
      $distance_field
        ->setDataDefinition(DataDefinition::create('decimal'));
      $distance_field
        ->setType('decimal');
      $distance_field
        ->setDatasourceId($field
        ->getDatasourceId());
      $distance_field
        ->setPropertyPath($property_path_name);
      $backend_defined_fields[$distance_field_name] = $distance_field;
    }
  }
  $backend_defined_fields['search_api_solr_score_debugging'] = $this
    ->getFieldsHelper()
    ->createField($index, 'search_api_solr_score_debugging', [
    'label' => 'Solr score debugging',
    'description' => $this
      ->t('Detailed information about the score calculation.'),
    'type' => 'string',
    'property_path' => 'search_api_solr_score_debugging',
    'data_definition' => DataDefinition::create('string'),
  ]);
  return $backend_defined_fields;
}