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 testTextPhrase() {

		$client = new Elastica_Client();
		$index = $client->getIndex('test');
		$index->create(array(), true);
		$type = $index->getType('test');

		$doc = new Elastica_Document(1, array('name' => 'Basel-Stadt'));
		$type->addDocument($doc);
		$doc = new Elastica_Document(2, array('name' => 'New York'));
		$type->addDocument($doc);
		$doc = new Elastica_Document(3, array('name' => 'New Hampshire'));
		$type->addDocument($doc);
		$doc = new Elastica_Document(4, array('name' => 'Basel Land'));
		$type->addDocument($doc);


		$index->refresh();

		$type = 'text_phrase';
		$field = 'name';

		$query = new Elastica_Query_Text();
		$query->setFieldQuery($field, 'Basel New');
		$query->setField('operator', 'OR');
		$query->setFieldType($field, $type);

		$resultSet = $index->search($query);

		$this->assertEquals(4, $resultSet->count());
	}
Пример #3
0
 public function testRawQuery()
 {
     $textQuery = new Elastica_Query_Text();
     $textQuery->setField('title', 'test');
     $query1 = Elastica_Query::create($textQuery);
     $query2 = new Elastica_Query();
     $query2->setRawQuery(array('query' => array('text' => array('title' => 'test'))));
     $this->assertEquals($query1->toArray(), $query2->toArray());
 }
Пример #4
0
 public function testToArray()
 {
     $queryText = 'Nicolas Ruflin';
     $type = 'text_phrase';
     $analyzer = 'myanalyzer';
     $maxExpansions = 12;
     $field = 'test';
     $query = new Elastica_Query_Text();
     $query->setFieldQuery($field, $queryText);
     $query->setFieldType($field, $type);
     $query->setFieldParam($field, 'analyzer', $analyzer);
     $query->setFieldMaxExpansions($field, $maxExpansions);
     $expectedArray = array('text' => array($field => array('query' => $queryText, 'type' => $type, 'analyzer' => $analyzer, 'max_expansions' => $maxExpansions)));
     $this->assertEquals($expectedArray, $query->toArray());
 }