elasticsearch_search_api-1.0.x-dev/src/Search/SearchQueryBuilder.php

src/Search/SearchQueryBuilder.php
<?php

namespace Drupal\elasticsearch_search_api\Search;

use Drupal\elasticsearch_search_api\Search\Facet\FacetValueInterface;

/**
 * Builds a URL query array for a given search action.
 */
class SearchQueryBuilder implements SearchQueryBuilderInterface {

  /**
   * {@inheritdoc}
   */
  public function buildKeywordQuery(FacetedKeywordSearchAction $searchAction): array {
    $query = [
      'keyword' => $searchAction->getKeyword(),
    ];

    foreach ($searchAction->getChosenFacetValues() as $facet => $values) {
      $values = array_map(
        function (FacetValueInterface $value) {
          return $value->value();
        },
        iterator_to_array($values)
      );
      $query[$facet] = $values;
    }

    return $query;
  }

  /**
   * {@inheritdoc}
   */
  public function buildFacetedQuery(FacetedSearchAction $searchAction): array {
    if (!$searchAction instanceof FacetedSearchAction) {
      throw new \InvalidArgumentException('Expected a ' . FacetedSearchAction::class);
    }

    $query = [];

    foreach ($searchAction->getChosenFacetValues() as $facet => $values) {
      $values = array_map(
        function (FacetValueInterface $value) {
          return $value->value();
        },
        iterator_to_array($values)
      );
      $query[$facet] = $values;
    }

    return $query;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc