/** * @group unit */ public function testConstruct() { $ids1 = new Ids('foo', array(1, 2)); $ids2 = new Ids('bar', array(3, 4)); $and1 = new BoolOr(array($ids1, $ids2)); $and2 = new BoolOr(); $and2->addFilter($ids1); $and2->addFilter($ids2); $this->assertEquals($and1->toArray(), $and2->toArray()); }
public function testToArray() { $orFilter = new BoolOr(); $filter1 = new Ids(); $filter1->setIds('1'); $filter2 = new Ids(); $filter2->setIds('2'); $orFilter->addFilter($filter1); $orFilter->addFilter($filter2); $expectedArray = array('or' => array($filter1->toArray(), $filter2->toArray())); $this->assertEquals($expectedArray, $orFilter->toArray()); }
/** * @group functional */ public function testOrFilter() { $index = $this->_createIndex(); $type = $index->getType('test'); $doc1 = new Document('', array('categoryId' => 1)); $doc2 = new Document('', array('categoryId' => 2)); $doc3 = new Document('', array('categoryId' => 3)); $type->addDocument($doc1); $type->addDocument($doc2); $type->addDocument($doc3); $index->refresh(); $boolOr = new \Elastica\Filter\BoolOr(); $boolOr->addFilter(new \Elastica\Filter\Term(array('categoryId' => '1'))); $boolOr->addFilter(new \Elastica\Filter\Term(array('categoryId' => '2'))); $resultSet = $type->search($boolOr); $this->assertEquals(2, $resultSet->count()); }
/** * or filter * * @link http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-or-filter.html * @param AbstractFilter[] $filters * @return BoolOr */ public function bool_or($filters) { $or = new BoolOr(); $or->setFilters($filters); return $or; }
/** * @return array */ protected function addFilters() { if (!isset($_GET['filters'])) { return false; } $filterCount = 0; $filters = new El\Filter\Bool(); foreach ($_GET['filters'] as $key => $filterValue) { $filterCatCount = 0; $filterPart = new El\Filter\BoolOr(); foreach ($filterValue as $term => $enabled) { if ($enabled == 'true') { $term = str_replace('_', ' ', $term); $filter = new El\Filter\Term(); $filter->setTerm($key, $term); $filterPart->addFilter($filter); $filterCount++; $filterCatCount++; } } if ($filterCatCount > 0) { $filters->addMust($filterPart); } } if ($filterCount === 0) { return false; } return $filters; }
public function or_() { // @codingStandardsIgnoreEnd $filters = func_get_args(); $or = new Filter\BoolOr(); foreach ($filters as $filter) { $or->addFilter($filter); } return $or; }
/** * Combines all the passed arguments in a single BoolOr filter. * * ### Example: * * {{{ * $bool = $builder->or( * $builder->missing('tags'), * $builder->exists('comments') * ); * }}} * * @return Elastica\Filter\BoolOr */ public function or_() { $filters = func_get_args(); $or = new Filter\BoolOr(); foreach ($filters as $filter) { $or->addFilter($filter); } return $or; }
/** * @param BoolOr $nestedOrFilter Nested or filter * @param string $nestedProperty Nested property (can be 'variants') */ private function addAvailableProductsVariantFilters(BoolOr $nestedOrFilter, $nestedProperty) { $variantsNestedBool = new BoolQuery(); $variantsNestedBool->setMinimumNumberShouldMatch(1); $availableOn = new QueryRange($nestedProperty . '.availableOn', array('lte' => "now")); $variantsNestedBool->addMust($availableOn); $availableUntil = new Filtered(); $availableUntilFilter = new BoolOr(); $availableUntilNull = new Missing($nestedProperty . '.availableUntil'); $availableUntilFilter->addFilter($availableUntilNull); $availableUntilGte = new FilterRange($nestedProperty . '.availableUntil', array('gte' => time())); $availableUntilFilter->addFilter($availableUntilGte); $availableUntil->setFilter($availableUntilFilter); $variantsNestedBool->addMust($availableUntil); $availableOnDemand = new QueryTerm(array($nestedProperty . '.availableOnDemand' => true)); $variantsNestedBool->addShould($availableOnDemand); $onHand = new QueryRange($nestedProperty . '.onHand', array('gt' => 0)); $variantsNestedBool->addShould($onHand); $nested = new Nested(); $nested->setPath($nestedProperty); $nested->setQuery($variantsNestedBool); $nestedOrFilter->addFilter($nested); }
/** * @return BoolOr */ private function addFilters() { // $filterCount = 0; $filters = new Bool(); $typeFilter = new Type('issue'); $filters->addMust($typeFilter); if (!isset($_GET['filters'])) { return $filters; } foreach ($_GET['filters'] as $key => $filterValue) { $filterCatCount = 0; $filterPart = new BoolOr(); foreach ($filterValue as $term => $enabled) { if ($enabled == 'true') { $term = str_replace('_', ' ', $term); $filter = new Term(); if ($key == 'tracker' || $key == 'project' || $key == 'category' || $key == 'status' || $key == 'author' || $key == 'priority' || $key == 'fixed_version') { $filter->setTerm($key . '.name', $term); } else { $filter->setTerm($key, $term); } $filterPart->addFilter($filter); // $filterCount++; $filterCatCount++; } } if ($filterCatCount > 0) { $filters->addMust($filterPart); } } // if($filterCount === 0) { // return false; // } return $filters; }