'ok', 'autocomplete' => $request->query->get('autocomplete'), 'keys' => $request->query->get('keys'), 'range' => array( 'offset' => $request->query->get('offset'), 'limit' => $request->query->get('limit'), ), ]; // Get the typed string from the URL, if it exists. if ($keys = $resp['keys']) { $typed_string = Tags::explode($keys); $typed_string = Unicode::strtolower($keys); \Drupal::logger('materio_sapi')->notice($typed_string); $index = Index::load('database'); $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($resp['range']['offset'], $resp['range']['limit']); // 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_search'); $results = $query->execute(); $resultitems = $results->getResultItems(); $resp['count'] = $results->getResultCount(); $resp['resultitems'] = array_keys($resultitems); $resp['options'] = $query->getOptions(); $items = []; 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)); $nid = $result->getField('nid')->getValues()[0]; $title = $result->getField('title')->getValues()[0]->getText(); $items[] = [ 'nid' => $nid, 'title' => $title, ]; } $resp['items'] = $items; } return new JsonResponse($resp); } }