/** * {@inheritdoc} */ public function handle(CriteriaPartInterface $criteriaPart, Criteria $criteria, Search $search, ShopContextInterface $context) { $aggregation = new TermsAggregation('manufacturer'); $aggregation->setField('manufacturer.id'); $aggregation->addParameter('size', self::AGGREGATION_SIZE); $search->addAggregation($aggregation); }
/** * {@inheritdoc} */ public function preProcessSearch(Search $search, Search $relatedSearch, FilterState $state = null) { $name = $state ? $state->getName() : $this->getField(); $agg = new TermsAggregation($name); $agg->setField($this->getField()); $search->addAggregation($agg); }
/** * {@inheritdoc} */ public function handle(CriteriaPartInterface $criteriaPart, Criteria $criteria, Search $search, ShopContextInterface $context) { /** @var ProductAttributeFacet $criteriaPart */ $field = 'attributes.core.' . $criteriaPart->getField(); $this->criteriaParts[] = $criteriaPart; switch ($criteriaPart->getMode()) { case ProductAttributeFacet::MODE_VALUE_LIST_RESULT: case ProductAttributeFacet::MODE_RADIO_LIST_RESULT: $aggregation = new TermsAggregation($criteriaPart->getName()); $aggregation->setField($field); break; case ProductAttributeFacet::MODE_BOOLEAN_RESULT: $count = new ValueCountAggregation($criteriaPart->getName() . '_count'); $count->setField($field); $aggregation = new FilterAggregation($criteriaPart->getName()); $aggregation->setFilter(new ExistsFilter($field)); $aggregation->addAggregation($count); break; case ProductAttributeFacet::MODE_RANGE_RESULT: $aggregation = new TermsAggregation($criteriaPart->getName()); $aggregation->setField($field); break; default: return; } $search->addAggregation($aggregation); }
/** * Get aggregation collection with several aggregations registered. * * @return AbstractAggregation */ private function buildAggregation() { $aggregation = new TermsAggregation('terms'); $aggregation->setField('description'); $aggregation2 = new RangeAggregation('range'); $aggregation2->setField('price'); $aggregation2->addRange(null, 20); $aggregation2->addRange(20, null); $aggregation->addAggregation($aggregation2); return $aggregation; }
/** * Creates locales list. * * @param ViewData\ChoicesAwareViewData $filter * * @return array */ private function buildLocalesList($filter) { $search = $this->repository->createSearch(); $localeAgg = new TermsAggregation('locale_agg'); $localeAgg->setField('messages.locale'); $search->addAggregation($localeAgg); $result = $this->repository->execute($search, Result::RESULTS_RAW); $list = []; foreach ($result['aggregations']['agg_locale_agg']['buckets'] as $value) { $list[$value['key']] = true; } ksort($list); $activeLocales = []; if ($filter->getState()->isActive()) { foreach ($filter->getChoices() as $choice) { $activeLocales[$choice->getLabel()] = $choice->isActive(); } $list = array_merge($list, $activeLocales); } return $list; }
/** * Tests setOrder DESC method. */ public function testTermsAggregationSetOrderDESC() { // Case #7 terms aggregation with order term mode, desc direction. $aggregation = new TermsAggregation('test_agg'); $aggregation->setField('test_field'); $aggregation->addParameter('order', ['_term' => 'desc']); $result = ['terms' => ['field' => 'test_field', 'order' => ['_term' => 'desc']]]; $this->assertEquals($aggregation->toArray(), $result); }
/** * {@inheritdoc} */ public function handle(CriteriaPartInterface $criteriaPart, Criteria $criteria, Search $search, ShopContextInterface $context) { $aggregation = new TermsAggregation('properties'); $aggregation->setField('properties.id'); $search->addAggregation($aggregation); }