Exemple #1
0
 /**
  * @return Result
  */
 protected function getResult()
 {
     if (!$this->result) {
         $this->result = $this->indexer->query($this->query);
     }
     return $this->result;
 }
Exemple #2
0
 public function testQuery()
 {
     $select = $this->indexService->select();
     $resultItem = new Item($this->entityManager);
     $searchResults = [$resultItem];
     $this->engine->expects($this->once())->method('search')->will($this->returnCallback(function (Query $query) use($searchResults) {
         return new Result($query, $searchResults, count($searchResults));
     }));
     $result = $this->indexService->query($select);
     $this->assertEquals($searchResults, $result->getElements());
     $this->assertEquals(count($searchResults), $result->getRecordsCount());
 }
 /**
  * Gets search result
  *
  * @param int    $page   Page number
  * @param int    $limit  Number of items per page
  * @param string $search The search string.
  *
  * @return array
  */
 public function getSearchResult($page = 1, $limit = 10, $search = '')
 {
     $searchQuery = $this->searchIndexer->getSimpleSearchQuery($search, $this->getOffset($page, $limit), $limit, $this->getCustomerSearchAliases());
     $searchResult = $this->searchIndexer->query($searchQuery);
     $result = ['result' => [], 'totalCount' => function () use($searchResult) {
         return $searchResult->getRecordsCount();
     }];
     if ($searchResult->count() > 0) {
         $customers = $this->getCustomerListQueryBuilder($searchResult)->getQuery()->getResult();
         $result['result'] = $this->mergeResults($searchResult, $customers);
     }
     return $result;
 }
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var GetListContext $context */
     if ($context->hasResult()) {
         // result data are already retrieved
         return;
     }
     $query = $context->getQuery();
     if (!$query instanceof SearchQuery) {
         // unsupported query
         return;
     }
     $searchResult = $this->searchIndex->query($query);
     $context->setResult($searchResult->toArray());
     // set callback to be used to calculate total count
     $context->setTotalCountCallback(function () use($searchResult) {
         return $searchResult->getRecordsCount();
     });
 }