summaryrefslogtreecommitdiff
path: root/vendor/ruflin/elastica/lib/Elastica/Query/Common.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/ruflin/elastica/lib/Elastica/Query/Common.php')
-rw-r--r--vendor/ruflin/elastica/lib/Elastica/Query/Common.php172
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();
+ }
+}