You are here

public function Terms::getAutocompleteSuggestions in Search API Solr 8.2

Same name and namespace in other branches
  1. 8.3 src/Plugin/search_api_autocomplete/suggester/Terms.php \Drupal\search_api_solr\Plugin\search_api_autocomplete\suggester\Terms::getAutocompleteSuggestions()
  2. 4.x src/Plugin/search_api_autocomplete/suggester/Terms.php \Drupal\search_api_solr\Plugin\search_api_autocomplete\suggester\Terms::getAutocompleteSuggestions()

Retrieves autocompletion suggestions for some user input.

For example, when given the user input "teach us", with "us" being considered incomplete, \Drupal\search_api_autocomplete\SuggestionInterface objects representing the following suggestions might be returned:

[
  [
    'prefix' => t('Did you mean:'),
    'user_input' => 'reach us',
  ],
  [
    'user_input' => 'teach us',
    'suggestion_suffix' => 'ers',
  ],
  [
    'user_input' => 'teach us',
    'suggestion_suffix' => ' swimming',
  ],
];

Parameters

\Drupal\search_api\Query\QueryInterface $query: A query representing the completed user input so far.

string $incomplete_key: The start of another fulltext keyword for the search, which should be completed. Might be empty, in which case all user input up to now was considered completed. Then, additional keywords for the search could be suggested.

string $user_input: The complete user input for the fulltext search keywords so far.

Return value

\Drupal\search_api_autocomplete\Suggestion\SuggestionInterface[] An array of autocomplete suggestions.

Overrides Server::getAutocompleteSuggestions

File

src/Plugin/search_api_autocomplete/suggester/Terms.php, line 24

Class

Terms
Provides a suggester that retrieves suggestions from Solr's Terms component.

Namespace

Drupal\search_api_solr\Plugin\search_api_autocomplete\suggester

Code

public function getAutocompleteSuggestions(QueryInterface $query, $incomplete_key, $user_input) {
  if (!($backend = static::getBackend($this
    ->getSearch()
    ->getIndex()))) {
    return [];
  }
  if ($this->configuration['fields']) {
    $query
      ->setFulltextFields($this->configuration['fields']);
  }
  else {
    $query
      ->setFulltextFields($query
      ->getIndex()
      ->getFulltextFields());
  }
  return $backend
    ->getAutocompleteSuggestions($query, $this
    ->getSearch(), $incomplete_key, $user_input);
}