Author: Aurelien FOUCRET (aurelien.foucret@smile.fr)
Inheritance: extends Magento\Framework\Search\Request\QueryInterface
Example #1
0
 /**
  * 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;
 }
Example #2
0
 /**
  * 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;
 }
Example #3
0
 /**
  * {@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];
 }
Example #4
0
 /**
  * {@inheritDoc}
  */
 public function buildQuery(QueryInterface $query)
 {
     return ['range' => [$query->getField() => $query->getBounds()]];
 }
Example #5
0
 /**
  * {@inheritDoc}
  */
 public function buildQuery(QueryInterface $query)
 {
     $searchQueryParams = ['query' => $query->getQueryText(), 'minimum_should_match' => $query->getMinimumShouldMatch(), 'boost' => $query->getBoost()];
     return ['match' => [$query->getField() => $searchQueryParams]];
 }
Example #6
0
 /**
  * {@inheritDoc}
  */
 public function buildQuery(QueryInterface $query)
 {
     return ['terms' => [$query->getField() => $query->getValues()]];
 }
Example #7
0
 /**
  * {@inheritDoc}
  */
 public function buildQuery(QueryInterface $query)
 {
     return ['missing' => ['field' => $query->getField()]];
 }
Example #8
0
 /**
  * {@inheritDoc}
  */
 public function buildQuery(QueryInterface $query)
 {
     $subQuery = $this->parentBuilder->buildQuery($query->getQuery());
     return ['bool' => ['must_not' => [$subQuery]]];
 }
Example #9
0
 /**
  * {@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];
 }
Example #10
0
 /**
  * {@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];
 }