/** * Return the list of queries associated to a clause. * * @param QueryInterface $query Bool query. * @param string $clause Current clause (must, should, must_not). * * @return QueryInterface[] */ private function getQueryClause($query, $clause) { $queries = $query->getMust(); if ($clause == self::QUERY_CONDITION_NOT) { $queries = $query->getMustNot(); } elseif ($clause == self::QUERY_CONDITION_SHOULD) { $queries = $query->getShould(); } return $queries; }
/** * Retrieve the builder used to build a query. * * @param QueryInterface $query Query to be built. * * @return BuilderInterface|null */ private function getBuilder($query) { $builder = null; $queryType = $query->getType(); if (isset($this->queryBuilderClasses[$queryType])) { $builderClass = $this->queryBuilderClasses[$queryType]; $builder = $this->objectManager->get($builderClass, ['builder' => $this]); } return $builder; }
/** * {@inheritDoc} */ public function buildQuery(QueryInterface $query) { $searchQuery = []; if ($query->getFilter()) { $searchQuery['filter'] = $this->parentBuilder->buildQuery($query->getFilter()); } if ($query->getQuery()) { $searchQuery['query'] = $this->parentBuilder->buildQuery($query->getQuery()); } $searchQuery['boost'] = $query->getBoost(); return ['filtered' => $searchQuery]; }
/** * {@inheritDoc} */ public function buildQuery(QueryInterface $query) { return ['range' => [$query->getField() => $query->getBounds()]]; }
/** * {@inheritDoc} */ public function buildQuery(QueryInterface $query) { $searchQueryParams = ['query' => $query->getQueryText(), 'minimum_should_match' => $query->getMinimumShouldMatch(), 'boost' => $query->getBoost()]; return ['match' => [$query->getField() => $searchQueryParams]]; }
/** * {@inheritDoc} */ public function buildQuery(QueryInterface $query) { return ['terms' => [$query->getField() => $query->getValues()]]; }
/** * {@inheritDoc} */ public function buildQuery(QueryInterface $query) { return ['missing' => ['field' => $query->getField()]]; }
/** * {@inheritDoc} */ public function buildQuery(QueryInterface $query) { $subQuery = $this->parentBuilder->buildQuery($query->getQuery()); return ['bool' => ['must_not' => [$subQuery]]]; }
/** * {@inheritDoc} */ public function buildQuery(QueryInterface $query) { $searchQuery = ['path' => $query->getPath(), 'score_mode' => $query->getScoreMode(), 'query' => $this->parentBuilder->buildQuery($query->getQuery()), 'boost' => $query->getBoost()]; return ['nested' => $searchQuery]; }
/** * {@inheritDoc} */ public function buildQuery(QueryInterface $query) { $fields = []; foreach ($query->getFields() as $field => $weight) { $fields[] = sprintf("%s^%s", $field, $weight); } $searchQueryParams = ['query' => $query->getQueryText(), 'fields' => $fields, 'minimum_should_match' => $query->getMinimumShouldMatch(), 'tie_breaker' => $query->getTieBreaker(), 'boost' => $query->getBoost()]; if ($query->getMatchType()) { $searchQueryParams['type'] = $query->getMatchType(); } if ($query->getCutoffFrequency()) { $searchQueryParams['cutoff_frequency'] = $query->getCutoffFrequency(); } if ($query->getFuzzinessConfiguration()) { $searchQueryParams['fuzziness'] = $query->getFuzzinessConfiguration()->getValue(); $searchQueryParams['prefix_length'] = $query->getFuzzinessConfiguration()->getPrefixLength(); $searchQueryParams['max_expansions'] = $query->getFuzzinessConfiguration()->getMaxExpansion(); } return ['multi_match' => $searchQueryParams]; }