You are here

public function ElasticsearchConnectorSearchApiHighlight::preprocessSearchQuery in Elasticsearch Connector 7.5

Same name and namespace in other branches
  1. 7 modules/elasticsearch_connector_search_api/includes/processor_highlight.inc \ElasticsearchConnectorSearchApiHighlight::preprocessSearchQuery()
  2. 7.2 modules/elasticsearch_connector_search_api/includes/processor_highlight.inc \ElasticsearchConnectorSearchApiHighlight::preprocessSearchQuery()

Calls processKeys() for the keys and processFilters() for the filters.

Overrides SearchApiAbstractProcessor::preprocessSearchQuery

File

modules/elasticsearch_connector_search_api/includes/processor_highlight.inc, line 139
Contains the SearchApiHighlight class.

Class

ElasticsearchConnectorSearchApiHighlight
@file Contains the SearchApiHighlight class.

Code

public function preprocessSearchQuery(SearchApiQuery $query) {
  if (!$this
    ->supportsIndex($query
    ->getIndex())) {
    throw new SearchApiException("This processor is only available for Elasticsearch connector search api implementation.");
  }
  $fields = $query
    ->getFields();
  if (!empty($fields)) {
    $params['highlight']['pre_tags'] = array(
      $this->options['prefix'],
    );
    $params['highlight']['post_tags'] = array(
      $this->options['suffix'],
    );
    $params['highlight']['fragment_size'] = $this->options['excerpt_length'];
    $params['highlight']['number_of_fragments'] = $this->options['excerpt_fragments'];
    foreach ($fields as $field) {
      $params['highlight']['fields'][$field] = new stdClass();
    }
    $elasticsearch_processors_params = $query
      ->getOption('elasticsearch_processors_params', array());
    $elasticsearch_processors_params['highlight'] = $params['highlight'];
    $query
      ->setOption('elasticsearch_processors_params', $elasticsearch_processors_params);
  }
}