コード例 #1
0
 protected function processQuery(RequestQueryInterface $query, DataObject $params, $conditionType)
 {
     switch ($query->getType()) {
         case RequestQueryInterface::TYPE_MATCH:
             $this->processMatchQuery($query, $params, $conditionType);
             break;
         case RequestQueryInterface::TYPE_BOOL:
             $this->processBoolQuery($query, $params, $conditionType);
             break;
         case RequestQueryInterface::TYPE_FILTER:
             $this->processFilterQuery($query, $params, $conditionType);
             break;
     }
 }
コード例 #2
0
 /**
  * @param RequestQueryInterface $query
  * @return FilterInterface[]
  */
 private function getFilters($query)
 {
     $filters = [];
     switch ($query->getType()) {
         case RequestQueryInterface::TYPE_BOOL:
             /** @var \Magento\Framework\Search\Request\Query\BoolExpression $query */
             foreach ($query->getMust() as $subQuery) {
                 $filters = array_merge($filters, $this->getFilters($subQuery));
             }
             foreach ($query->getShould() as $subQuery) {
                 $filters = array_merge($filters, $this->getFilters($subQuery));
             }
             foreach ($query->getMustNot() as $subQuery) {
                 $filters = array_merge($filters, $this->getFilters($subQuery));
             }
             break;
         case RequestQueryInterface::TYPE_FILTER:
             /** @var Filter $query */
             $filter = $query->getReference();
             if (FilterInterface::TYPE_BOOL === $filter->getType()) {
                 $filters = array_merge($filters, $this->getFiltersFromBoolFilter($filter));
             } else {
                 $filters[] = $filter;
             }
             break;
         default:
             break;
     }
     return $filters;
 }
コード例 #3
0
ファイル: Mapper.php プロジェクト: nja78/magento2
 /**
  * Process query
  *
  * @param ScoreBuilder $scoreBuilder
  * @param RequestQueryInterface $query
  * @param Select $select
  * @param string $conditionType
  * @param QueryContainer $queryContainer
  * @return Select
  * @throws \InvalidArgumentException
  */
 protected function processQuery(
     ScoreBuilder $scoreBuilder,
     RequestQueryInterface $query,
     Select $select,
     $conditionType,
     QueryContainer $queryContainer
 ) {
     switch ($query->getType()) {
         case RequestQueryInterface::TYPE_MATCH:
             /** @var MatchQuery $query */
             $select = $queryContainer->addMatchQuery(
                 $select,
                 $query,
                 $conditionType
             );
             break;
         case RequestQueryInterface::TYPE_BOOL:
             /** @var BoolQuery $query */
             $select = $this->processBoolQuery($scoreBuilder, $query, $select, $queryContainer);
             break;
         case RequestQueryInterface::TYPE_FILTER:
             /** @var FilterQuery $query */
             $select = $this->processFilterQuery($scoreBuilder, $query, $select, $conditionType, $queryContainer);
             break;
         default:
             throw new \InvalidArgumentException(sprintf('Unknown query type \'%s\'', $query->getType()));
     }
     return $select;
 }
コード例 #4
0
ファイル: IndexBuilder.php プロジェクト: nja78/magento2
 /**
  * @param QueryInterface $query
  * @return bool
  */
 private function hasFilters(QueryInterface $query)
 {
     $hasFilters = false;
     switch ($query->getType()) {
         case RequestQueryInterface::TYPE_BOOL:
             /** @var \Magento\Framework\Search\Request\Query\Bool $query */
             foreach ($query->getMust() as $subQuery) {
                 $hasFilters |= $this->hasFilters($subQuery);
             }
             foreach ($query->getShould() as $subQuery) {
                 $hasFilters |= $this->hasFilters($subQuery);
             }
             foreach ($query->getMustNot() as $subQuery) {
                 $hasFilters |= $this->hasFilters($subQuery);
             }
             break;
         case RequestQueryInterface::TYPE_FILTER:
             $hasFilters |= true;
             break;
         default:
             $hasFilters |= false;
             break;
     }
     return $hasFilters;
 }
コード例 #5
0
ファイル: Mapper.php プロジェクト: pavelnovitsky/magento2
 /**
  * Process query
  *
  * @param ScoreBuilder $scoreBuilder
  * @param RequestQueryInterface $query
  * @param Select $select
  * @param bool $isNot
  * @return Select
  * @throws \InvalidArgumentException
  */
 protected function processQuery(ScoreBuilder $scoreBuilder, RequestQueryInterface $query, Select $select, $isNot)
 {
     switch ($query->getType()) {
         case RequestQueryInterface::TYPE_MATCH:
             /** @var MatchQuery $query */
             $scoreBuilder->startQuery();
             $select = $this->matchQueryBuilder->build($scoreBuilder, $select, $query, $isNot);
             $scoreBuilder->endQuery($query->getBoost());
             break;
         case RequestQueryInterface::TYPE_BOOL:
             /** @var BoolQuery $query */
             $select = $this->processBoolQuery($scoreBuilder, $query, $select);
             break;
         case RequestQueryInterface::TYPE_FILTER:
             /** @var FilterQuery $query */
             $select = $this->processFilterQuery($scoreBuilder, $query, $select, $isNot);
             break;
         default:
             throw new \InvalidArgumentException(sprintf('Unknown query type \'%s\'', $query->getType()));
     }
     return $select;
 }
コード例 #6
0
ファイル: Mapper.php プロジェクト: Doability/magento2dev
 /**
  * Process query
  *
  * @param ScoreBuilder          $scoreBuilder
  * @param RequestQueryInterface $query
  * @param Select                $select
  * @param string                $conditionType
  * @param QueryContainer        $queryContainer
  * @return Select
  * @throws \InvalidArgumentException
  */
 protected function processQuery(ScoreBuilder $scoreBuilder, RequestQueryInterface $query, Select $select, $conditionType, QueryContainer $queryContainer)
 {
     switch ($query->getType()) {
         case RequestQueryInterface::TYPE_BOOL:
             /** @var BoolQuery $query */
             $select = $this->processBoolQuery($scoreBuilder, $query, $select, $queryContainer);
             break;
         case RequestQueryInterface::TYPE_FILTER:
             /** @var FilterQuery $query */
             $select = $this->processFilterQuery($scoreBuilder, $query, $select, $conditionType, $queryContainer);
             break;
     }
     return $select;
 }
コード例 #7
0
ファイル: MapperQL.php プロジェクト: Doability/magento2dev
 /**
  * @param RequestQueryInterface $query
  * @param SphinxQL              $select
  * @param  string               $conditionType
  * @param QueryContainer        $queryContainer
  * @return SphinxQL
  */
 protected function processQuery(RequestQueryInterface $query, SphinxQL $select, $conditionType, QueryContainer $queryContainer)
 {
     switch ($query->getType()) {
         case RequestQueryInterface::TYPE_MATCH:
             $select = $queryContainer->addMatchQuery($select, $query, $conditionType);
             break;
         case RequestQueryInterface::TYPE_BOOL:
             $select = $this->processBoolQuery($query, $select, $queryContainer);
             break;
     }
     return $select;
 }