/** * @return \Elastica\Aggregation\AbstractAggregation */ public function createAggregation() { $fieldName = $this->facetConfigTransfer->getFieldName(); $facetValueAgg = $this->aggregationBuilder->createTermsAggregation($fieldName . self::VALUE_SUFFIX)->setField($this->addNestedFieldPrefix($fieldName, self::FACET_VALUE)); $facetNameAgg = $this->createFacetNameAggregation($fieldName)->addAggregation($facetValueAgg); return $this->createNestedFacetAggregation($fieldName, $facetNameAgg); }
/** * @param array $aggregations * @param array $requestParameters * * @return \Spryker\Shared\Transfer\TransferInterface */ public function extractDataFromAggregations(array $aggregations, array $requestParameters) { $parameterName = $this->facetConfigTransfer->getParameterName(); $fieldName = $this->facetConfigTransfer->getFieldName(); list($min, $max) = $this->extractRangeData($aggregations, $parameterName, $fieldName); $rangeResultTransfer = new RangeSearchResultTransfer(); $rangeResultTransfer->setName($parameterName)->setMin($min)->setMax($max); return $rangeResultTransfer; }
/** * @param array $aggregations * @param array $requestParameters * * @return \Spryker\Shared\Transfer\TransferInterface */ public function extractDataFromAggregations(array $aggregations, array $requestParameters) { $parameterName = $this->facetConfigTransfer->getParameterName(); $fieldName = $this->facetConfigTransfer->getFieldName(); $facetResultValueTransfers = $this->extractFacetData($aggregations, $parameterName, $fieldName); $facetResultTransfer = new FacetSearchResultTransfer(); $facetResultTransfer->setName($parameterName)->setValues($facetResultValueTransfers); if (isset($requestParameters[$parameterName])) { $facetResultTransfer->setActiveValue($requestParameters[$parameterName]); } return $facetResultTransfer; }
/** * @param array $aggregations * @param \Generated\Shared\Transfer\FacetConfigTransfer $facetConfigTransfer * * @return array */ protected function getAggregationRawData(array $aggregations, $facetConfigTransfer) { $facetName = $facetConfigTransfer->getName(); $fieldName = $facetConfigTransfer->getFieldName(); if ($facetConfigTransfer->getIsMultiValued() === true) { $aggregation = $aggregations[FacetQueryExpanderPlugin::AGGREGATION_GLOBAL_PREFIX . $facetName][FacetQueryExpanderPlugin::AGGREGATION_FILTER_NAME][$fieldName]; } else { $aggregation = $aggregations[$fieldName]; } return $aggregation; }
/** * @return \Elastica\Query\Nested */ public function createNestedQuery() { $fieldName = $this->facetConfigTransfer->getFieldName(); $nestedFieldName = $this->facetConfigTransfer->getName(); return $this->bindMultipleNestedQuery($fieldName, [$this->queryBuilder->createTermQuery($fieldName . self::FACET_NAME_SUFFIX, $nestedFieldName), $this->queryBuilder->createRangeQuery($fieldName . self::FACET_VALUE_SUFFIX, $this->minValue, $this->maxValue)]); }
/** * @param \Generated\Shared\Transfer\FacetConfigTransfer $facetConfigTransfer * * @return string|null */ protected function getFacetValueType(FacetConfigTransfer $facetConfigTransfer) { return $this->indexMap->getType($facetConfigTransfer->getFieldName() . '.facet-value'); }
/** * @return \Elastica\Aggregation\AbstractAggregation */ public function createAggregation() { $fieldName = $this->facetConfigTransfer->getFieldName(); return $this->aggregationBuilder->createTermsAggregation($fieldName)->setField($fieldName); }
/** * @param \Generated\Shared\Transfer\FacetConfigTransfer $facetConfigTransfer * @param string $filterValue * * @return \Elastica\Query\Term */ protected function createTermQuery(FacetConfigTransfer $facetConfigTransfer, $filterValue) { return $this->queryBuilder->createTermQuery($facetConfigTransfer->getFieldName(), $filterValue); }