/** * (non-PHPdoc) * * @see \Agent\Entity\Relationship::getQuery() */ public function getQuery($value = null, $query = null, $required = null, $boost = null) { $query = parent::getQuery($value, $query, $required, $boost); $method = 'addMust'; // $required ? 'addMust' : 'addShould'; if (isset($value) && is_array($value) && count($value) == 2) { $range = new Elastica\Query\Range(); $field = $this->getCriterion()->getTypeField(); switch ($field) { case '_date': foreach ($value as &$date) { $time = strtotime($date); if ($time) { $date = date('Y-m-d\\TH:i:s', $time); } else { $date = date('Y-m-d\\TH:i:s', -9999999999.0); } } break; } @(list($from, $to) = $value); if (isset($from, $to)) { $range->addField($field, ['gt' => $from, 'lt' => $to]); $query->{$method}($range); } } return $query; }
/** * (non-PHPdoc) * * @see \Agent\Entity\Relationship::getQuery() */ public function getQuery($value = null, $query = null, $required = null, $boost = null) { $query = parent::getQuery($value, $query, $required, $boost); $method = $required ? 'addMustNot' : 'addMustNot'; if (isset($value)) { $query->{$method}(new Elastica\Query\Match('value', $value)); } return $query; }
/** * (non-PHPdoc) * * @see \Agent\Entity\Relationship::getQuery() */ public function getQuery($values = null, $query = null, $required = null, $boost = null) { $fields = array_flip(['city', 'state', 'zip']); $location = array_intersect_key(array_filter($values), $fields); $criterion = $this->getCriterion(); $method = 'addMust'; // $required ? 'addMust' : 'addShould'; $distance = empty($values['distance']) ? false : $values['distance']; if ($criterion && $location) { if (!$distance) { $query = parent::getQuery($values, $query, $required, $boost); $attribute = $criterion->getAttribute(); if ($attribute) { $attributeDesc = $attribute->getAttributeDesc(); if ($attributeDesc) { $token = strtolower(trim(current(explode(' ', $attributeDesc)))); if ($token && isset($location[$token])) { $value = $location[$token]; if (isset($value)) { if (is_array($value)) { $statesQuery = new \Agent\Elastica\Query\BoolQuery(); foreach ($value as $_value) { $state_full_name = $this->getStateNames($_value); if ($state_full_name) { $statesQuery->addShould(new Elastica\Query\Match('value', $state_full_name)); } $statesQuery->addShould(new Elastica\Query\Match('value', $_value)); } $query->{$method}($statesQuery); } else { $state_full_name = $this->getStateNames($value); if ($state_full_name) { $query->{$method}(new Elastica\Query\Match('value', $state_full_name)); } $query->{$method}(new Elastica\Query\Match('value', $value)); } } } } } } else { try { $localityQuery = new LocalityQuery($criterion->getServiceLocator()); $locality = $localityQuery->request($location); if ($locality) { list($latlon['lat'], $latlon['lon']) = $locality['_source']['latlon']; $query = new Elastica\Query\GeoDistance('locality', $latlon, $distance . "mi"); } } catch (\Exception $e) { // } } } return $query; }
/** * (non-PHPdoc) * * @see \Agent\Entity\Relationship::getQuery() */ public function getQuery($value = null, $query = null, $required = null, $boost = null) { $query = parent::getQuery($value, $query, $required, $boost); $method = $required ? 'addShould' : 'addShould'; if (isset($value) && is_array($value)) { foreach ($value as $v) { $query->{$method}(new Elastica\Query\Match('value', $v)); } } return $query; }
/** * (non-PHPdoc) * * @see \Agent\Entity\Relationship::getQuery() */ public function getQuery($value = null, $query = null, $required = null, $boost = null) { $query = parent::getQuery($value, $query, $required, $boost); $method = 'addMust'; // $required ? 'addMust' : 'addShould'; if (isset($value)) { $wildcard = new Elastica\Query\Wildcard('value', "*" . strtolower($value) . "*", $boost); $query->{$method}($wildcard); } return $query; }
/** * (non-PHPdoc) * * @see \Agent\Entity\Relationship::getQuery() */ public function getQuery($value = null, $query = null, $required = null, $boost = null) { $from = $to = null; if ($value && is_array($value) && count($value) == 2) { @(list($from, $to) = $value); } $query = parent::getQuery(null, $query, $required, $boost); $method = 'addMust'; // $required ? 'addMust' : 'addShould'; if (isset($from, $to)) { $range = new Elastica\Query\Range(); $range->addField($this->getCriterion()->getTypeField(), ['gte' => $from, 'lte' => $to]); $query->{$method}($range); } return $query; }
/** * (non-PHPdoc) * * @see \Agent\Entity\Relationship::getQuery() */ public function getQuery($value = null, $query = null, $required = null, $boost = null) { $query = parent::getQuery($value, $query, $required, $boost); $method = 'addMust'; // $required ? 'addMust' : 'addShould'; if (isset($value)) { $bool = (bool) $value; switch ($bool) { case true: $query->{$method}(new Elastica\Query\Terms('value', ['yes', 'true', '1'])); break; case false: $query->{$method}(new Elastica\Query\Terms('value', ['no', 'false', '0'])); break; } } return $query; }
/** * (non-PHPdoc) * * @see \Agent\Entity\Relationship::getQuery() */ public function getQuery($value = null, $query = null, $required = null, $boost = null) { $query = parent::getQuery($value, $query, $required, $boost); $method = 'addMust'; // $required ? 'addMust' : 'addShould'; if (isset($value)) { $range = new Elastica\Query\Range(); $field = $this->getCriterion()->getTypeField(); switch ($field) { case '_date': $time = strtotime($value); if ($time) { $value = date('Y-m-d\\TH:i:s', $time); } else { $value = date('Y-m-d\\TH:i:s', -9999999999.0); } break; } $range->addField($field, ['lte' => $value]); $query->{$method}($range); } return $query; }