/** * @group unit */ public function testBadArguments() { $this->setExpectedException('Elastica\\Exception\\InvalidException'); $query = new Fuzzy(); $query->addField('name', array(array('value' => 'Baden'))); $this->setExpectedException('Elastica\\Exception\\InvalidException'); $query = new Fuzzy(); $query->setField('name', array()); $this->setExpectedException('Elastica\\Exception\\InvalidException'); $query = new Fuzzy(); $query->setField('name', 'value'); $query->setField('name1', 'value1'); }
public function testFuzzyWithFacets() { $index = $this->_createIndex(); $type = $index->getType('test'); $doc = new Document(1, array('name' => 'Basel-Stadt')); $type->addDocument($doc); $doc = new Document(2, array('name' => 'New York')); $type->addDocument($doc); $doc = new Document(3, array('name' => 'Baden')); $type->addDocument($doc); $doc = new Document(4, array('name' => 'Baden Baden')); $type->addDocument($doc); $index->refresh(); $field = 'name'; $fuzzyQuery = new Fuzzy(); $fuzzyQuery->setField($field, 'Baden'); $facet = new \Elastica\Facet\Terms('test'); $facet->setField('name'); $query = new \Elastica\Query($fuzzyQuery); $query->addFacet($facet); $resultSet = $index->search($query); // Assert query worked ok $this->assertEquals(2, $resultSet->count()); // Check Facets $this->assertTrue($resultSet->hasFacets()); $facets = $resultSet->getFacets(); $this->assertEquals(2, $facets['test']['total']); }
/** * @group unit */ public function testBadArguments() { $this->setExpectedException('Elastica\\Exception\\InvalidException'); $query = new Fuzzy(); $err = array(); set_error_handler(function () use(&$err) { $err[] = func_get_args(); }); $query->addField('name', array(array('value' => 'Baden'))); restore_error_handler(); $this->assertCount(1, $err); $this->assertEquals(E_USER_DEPRECATED, $err[0][0]); $this->setExpectedException('Elastica\\Exception\\InvalidException'); $query = new Fuzzy(); $query->setField('name', array()); $this->setExpectedException('Elastica\\Exception\\InvalidException'); $query = new Fuzzy(); $query->setField('name', 'value'); $query->setField('name1', 'value1'); }
/** * Perform a basic search (currently fuzzy) * * @param $term * @param null $user * @param null $sortColumn * @param string $sortDirection * @param int $limit * @return array */ public function basicSearch($term, $user = null, $sortColumn = null, $sortDirection = 'desc', $limit = 50) { $query = new Query(); $query->setFrom(0); $query->setSize($limit); $fuzzy = new Fuzzy(); $fuzzy->setField('value', $term); $fuzzy->setFieldOption('fuzziness', 2); if ($user) { $userId = $user->id; $boolQuery = new BoolQuery(); $matchQuery = new Query\Match('user_id', $userId); $boolQuery->addMust($matchQuery); $boolQuery->addMust($fuzzy); $query->setQuery($boolQuery); } if ($sortColumn) { $query->addSort([$sortColumn => ['order' => $sortDirection]]); } $resultSet = $this->getTypedIndex()->search($query); return $this->getModels($resultSet); }