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 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()); }
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()); }
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()); }