diff options
Diffstat (limited to 'vendor/ruflin/elastica/lib/Elastica/Query/Common.php')
-rw-r--r-- | vendor/ruflin/elastica/lib/Elastica/Query/Common.php | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/Common.php b/vendor/ruflin/elastica/lib/Elastica/Query/Common.php new file mode 100644 index 00000000..9ca58d2e --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Query/Common.php @@ -0,0 +1,172 @@ +<?php +namespace Elastica\Query; + +/** + * Class Common. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-common-terms-query.html + */ +class Common extends AbstractQuery +{ + const OPERATOR_AND = 'and'; + const OPERATOR_OR = 'or'; + + /** + * @var string + */ + protected $_field; + + /** + * @var array + */ + protected $_queryParams = array(); + + /** + * @param string $field the field on which to query + * @param string $query the query string + * @param float $cutoffFrequency percentage in decimal form (.001 == 0.1%) + */ + public function __construct($field, $query, $cutoffFrequency) + { + $this->setField($field); + $this->setQuery($query); + $this->setCutoffFrequency($cutoffFrequency); + } + + /** + * Set the field on which to query. + * + * @param string $field the field on which to query + * + * @return $this + */ + public function setField($field) + { + $this->_field = $field; + + return $this; + } + + /** + * Set the query string for this query. + * + * @param string $query + * + * @return $this + */ + public function setQuery($query) + { + return $this->setQueryParam('query', $query); + } + + /** + * Set the frequency below which terms will be put in the low frequency group. + * + * @param float $frequency percentage in decimal form (.001 == 0.1%) + * + * @return $this + */ + public function setCutoffFrequency($frequency) + { + return $this->setQueryParam('cutoff_frequency', (float) $frequency); + } + + /** + * Set the logic operator for low frequency terms. + * + * @param string $operator see OPERATOR_* class constants for options + * + * @return $this + */ + public function setLowFrequencyOperator($operator) + { + return $this->setQueryParam('low_freq_operator', $operator); + } + + /** + * Set the logic operator for high frequency terms. + * + * @param string $operator see OPERATOR_* class constants for options + * + * @return $this + */ + public function setHighFrequencyOperator($operator) + { + return $this->setQueryParam('high_frequency_operator', $operator); + } + + /** + * Set the minimum_should_match parameter. + * + * @param int|string $minimum minimum number of low frequency terms which must be present + * + * @return $this + * + * @link Possible values for minimum_should_match http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-minimum-should-match.html + */ + public function setMinimumShouldMatch($minimum) + { + return $this->setQueryParam('minimum_should_match', $minimum); + } + + /** + * Set the boost for this query. + * + * @param float $boost + * + * @return $this + */ + public function setBoost($boost) + { + return $this->setQueryParam('boost', (float) $boost); + } + + /** + * Set the analyzer for this query. + * + * @param string $analyzer + * + * @return $this + */ + public function setAnalyzer($analyzer) + { + return $this->setQueryParam('analyzer', $analyzer); + } + + /** + * Enable / disable computation of score factor based on the fraction of all query terms contained in the document. + * + * @param bool $disable disable_coord is false by default + * + * @return $this + */ + public function setDisableCoord($disable = true) + { + return $this->setQueryParam('disable_coord', (bool) $disable); + } + + /** + * Set a parameter in the body of this query. + * + * @param string $key parameter key + * @param mixed $value parameter value + * + * @return $this + */ + public function setQueryParam($key, $value) + { + $this->_queryParams[$key] = $value; + + return $this; + } + + /** + * @return array + */ + public function toArray() + { + $this->setParam($this->_field, $this->_queryParams); + + return parent::toArray(); + } +} |