/** * @return Result */ protected function getResult() { if (!$this->result) { $this->result = $this->indexer->query($this->query); } return $this->result; }
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(); }); }