src/Aqarmap/Bundle/SearchBundle/Services/ElasticListingSearch/DefaultListingSearch.php line 36

  1. <?php
  2. namespace Aqarmap\Bundle\SearchBundle\Services\ElasticListingSearch;
  3. use Aqarmap\Bundle\SearchBundle\ScoreContainers\ListingsScoreContainer;
  4. class DefaultListingSearch extends AbstractElasticListingSearch
  5. {
  6. protected function getResults(int $page = 1, int $limit = 20)
  7. {
  8. try {
  9. $searchResults = [
  10. 'featuredListings' => [],
  11. 'searchResults' => $this->paginator,
  12. 'searchResultsIDs' => [],
  13. ];
  14. $scoringContainer = new ListingsScoreContainer();
  15. $scoreFunction = $scoringContainer->score($this->getScoreSettings());
  16. $resultsQuery = $this->repository->getResultQueryWithScore($scoreFunction);
  17. $results = $this->finder->createHybridPaginatorAdapter($resultsQuery);
  18. /** @var \Knp\Component\Pager\Pagination\PaginationInterface $pagination */
  19. $pagination = $this->paginator->paginate(
  20. $results,
  21. $page,
  22. $limit
  23. );
  24. $items = $pagination->getItems();
  25. $pagination->setItems($this->setListingsScoring($items));
  26. $searchResults['searchResults'] = $pagination;
  27. $searchResults['searchResultsIDs'] = $this->listingManager->getIdsFromPagination($pagination);
  28. } catch (\Exception) {
  29. $this->requestStack->getCurrentRequest()->getSession()->getFlashBag()->add(
  30. 'danger',
  31. $this->translator->trans('layout.search_empty_results')
  32. );
  33. $searchResults['searchResults'] = $this->paginator->paginate([], 1, 10);
  34. }
  35. return $searchResults;
  36. }
  37. }