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);
 }
예제 #2
0
 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());
 }
예제 #3
0
파일: Type.php 프로젝트: ro-ka/Elastica
	/**
	 * 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);
	}