handle($request); if (!isset($request->getQueryParams()['ajaxsearch'], $request->getQueryParams()['q'])) { return $response; } $typoscriptConfiguration = GeneralUtility::makeInstance(TypoScriptConfiguration::class, $GLOBALS['TSFE']->tmpl->setup, $request->getAttribute('site')->getRootpageId()); $searchRequestBuilder = new SearchRequestBuilder($typoscriptConfiguration); $searchRequest = $searchRequestBuilder->buildForSearch( $request->getQueryParams(), $request->getAttribute('site')->getRootpageId(), $request->getAttribute('language')->getLanguageId()); try { $solrConnection = GeneralUtility::makeInstance(ConnectionManager::class) ->getConnectionByPageId( $request->getAttribute('site')->getRootpageId(), $request->getAttribute('language')->getLanguageId() ); $search = GeneralUtility::makeInstance(Search::class, $solrConnection); } catch (NoSolrConnectionFoundException $e) { $response->getBody()->write('No Solr connection available.'); return $response; } $searchResultSet = GeneralUtility::makeInstance(SearchResultSetService::class, $typoscriptConfiguration, $search)->search($searchRequest); $results = []; foreach ($searchResultSet->getSearchResults()->getArrayCopy() as $result) { /** @var \ApacheSolrForTypo3\Solr\Domain\Search\ResultSet\Result\SearchResult $result */ $results[] = $result->getFields(); } return new JsonResponse($results); } }