query->get('q')) { $typed_string = Tags::explode($input); $typed_string = Unicode::strtolower(array_pop($typed_string)); // \Drupal::logger('materio_sapi')->notice($typed_string); $index = Index::load('autocomplete'); $query = $index->query(); // Change the parse mode for the search. $parse_mode = \Drupal::service('plugin.manager.search_api.parse_mode') ->createInstance('direct'); $parse_mode->setConjunction('OR'); $query->setParseMode($parse_mode); // Set fulltext search keywords and fields. $query->keys($typed_string); $query->setFulltextFields(['name']); // Set additional conditions. // $query->addCondition('status', 1) // ->addCondition('author', 1, '<>'); // Restrict the search to specific languages. // $query->setLanguages(['de', 'it']); // Do paging. $query->range(0, 10); // Add sorting. $query->sort('search_api_relevance', 'DESC'); // Set one or more tags for the query. // @see hook_search_api_query_TAG_alter() // @see hook_search_api_results_TAG_alter() $query->addTag('materio_sapi_autocomplete'); $results = $query->execute(); // $items = $results->getResultItems(); // \Drupal::logger('materio_sapi')->notice($results->getResultCount()); // \Drupal::logger('materio_sapi')->notice(implode(', ', array_keys($items))); $response = []; foreach ($results as $result) { // \Drupal::logger('materio_sapi')->notice(print_r($result->getField('tid')->getValues(),true)); // \Drupal::logger('materio_sapi')->notice(print_r($result->getField('name')->getValues(),true)); $tid = $result->getField('tid')->getValues()[0]; $term_name = $result->getField('name')->getValues()[0]->getText(); $response[] = [ 'value' => $tid, 'label' => $term_name, ]; } } return new JsonResponse($response); } }