/** * Executes search. * * @param SearchRequest $request * * @return SearchResponse */ public function search(SearchRequest $request) { $search = $this->container->buildSearch($request); /** @var FilterInterface[] $filters */ foreach ($this->container->all() as $name => $filter) { // We simply exclude not related filters and current filter itself. $relatedFilters = $this->container->getFiltersByRelation(new AndRelation([$filter->getSearchRelation(), new ExcludeRelation([$name])])); $filter->preProcessSearch($search, $this->container->buildSearch($request, $relatedFilters), $request->get($name)); } $result = $this->repository->execute($search); return new SearchResponse($this->getFiltersViewData($result, $request), $result, $this->composeUrlParameters($request)); }
/** * Returns scan results iterator. * * @param Repository $repository * @param int $chunkSize * * @return RawResultIterator */ protected function getResults(Repository $repository, $chunkSize) { $search = $repository->createSearch(); $search->setScroll()->setSize($chunkSize); $search->addQuery(new MatchAllQuery()); return $repository->execute($search, Repository::RESULTS_RAW_ITERATOR); }
/** * Test 'scroll' functionality. */ public function testSearchScroll() { $search = $this->repository->createSearch(); $search->setSize(2); $search->setScroll('1m'); $search->addQuery(new MatchAllQuery()); $results = $this->repository->execute($search, Repository::RESULTS_RAW); $this->assertArrayHasKey('_scroll_id', $results); }
/** * Test for getTypes(). * * @param array $types * @param array $expectedTypes * @param array $bundlesMapping * * @dataProvider getExecuteData */ public function testGetTypes($types, $expectedTypes, $bundlesMapping) { $manager = $this->getMockBuilder('ONGR\\ElasticsearchBundle\\ORM\\Manager')->disableOriginalConstructor()->getMock(); $manager->expects($this->exactly(2))->method('getBundlesMapping')->willReturn($bundlesMapping); $connection = $this->getMockBuilder('ONGR\\ElasticsearchBundle\\Client\\Connection')->disableOriginalConstructor()->getMock(); $connection->expects($this->once())->method('search')->with($expectedTypes, [], [])->willReturn(['test']); $manager->expects($this->once())->method('getConnection')->willReturn($connection); $search = new Search(); $repository = new Repository($manager, $types); $results = $repository->execute($search, Repository::RESULTS_RAW); $this->assertEquals(['test'], $results); }
/** * Create and execute highlighted search. * * @param Repository $repository * @param TermQuery $termQuery * @param Highlight $highlight * @param string $resultsType * * @return array|Product[] */ private function executeHighlight($repository, $termQuery, $highlight, $resultsType = Repository::RESULTS_RAW) { $search = $repository->createSearch()->addQuery($termQuery)->setHighlight($highlight); $results = $repository->execute($search, $resultsType); return $results; }