private function searchCombination(SearchParameterBag $searchParams) { $query = new \Elastica_Query_Text(); $query->setFieldQuery('name', $searchParams->get('term')); $query->setFieldParam('name', 'type', 'phrase_prefix'); $this->results = $this->container->get('foq_elastica.finder.treatments')->find($query); $client = $this->container->get('foq_elastica.client'); $search = new \Elastica_Search($client); $postType = $this->get('foq_elastica.index.acme.post'); $tagType = $this->get('foq_elastica.index.acme.tag'); // add the types to the search $search->addType($postType)->addType($tagType); $index = $this->get('foq_elastica.index'); $search->addIndex($index); $searchTerm = $request->query->get('terms'); $postSubjectQuery = new \Elastica_Query_Text(); $postSubjectQuery->setFieldQuery('subject', $searchTerm); $postSubjectQuery->setFieldParam('subject', 'analyzer', 'snowball'); $tagQuery = new \Elastica_Query_Text(); $tagQuery->setFieldQuery('tagname', $searchTerm); $tagQuery->setFieldParam('tagname', 'analyzer', 'snowball'); $boolQuery = new \Elastica_Query_Bool(); $boolQuery->addShould($nameQuery); $boolQuery->addShould($keywordsQuery); $results = $search->search($boolQuery); return array('results' => $results); }
public function testSearchRequest() { $client = new Elastica_Client(); $search1 = new Elastica_Search($client); $index1 = $this->_createIndex('test1'); $index2 = $this->_createIndex('test2'); $type1 = $index1->getType('hello1'); $result = $search1->search(array()); $this->assertFalse($result->getResponse()->hasError()); $search1->addIndex($index1); $result = $search1->search(array()); $this->assertFalse($result->getResponse()->hasError()); $search1->addIndex($index2); $result = $search1->search(array()); $this->assertFalse($result->getResponse()->hasError()); $search1->addType($type1); $result = $search1->search(array()); $this->assertFalse($result->getResponse()->hasError()); }
/** * Do a search on this type * * @param string|array|Elastica_Query $query Array with all query data inside or a Elastica_Query object * @param int|array $options OPTIONAL Limit or associative array of options (option=>value) * @return Elastica_ResultSet ResultSet with all results inside * @see Elastica_Searchable::search */ public function search($query, $options = null) { $search = new Elastica_Search($this->getIndex()->getClient()); $search->addIndex($this->getIndex()); $search->addType($this); return $search->search($query, $options); }