You are here

public function SearchApiSolrBackend::getBackendDefinedFields in Search API Solr 8.3

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

Throws

\Drupal\search_api\SearchApiException

Overrides BackendPluginBase::getBackendDefinedFields

File

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

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;
    }
  }
  return $backend_defined_fields;
}