summaryrefslogtreecommitdiff
path: root/vendor/ruflin/elastica/lib/Elastica/Query/FuzzyLikeThis.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/ruflin/elastica/lib/Elastica/Query/FuzzyLikeThis.php')
-rw-r--r--vendor/ruflin/elastica/lib/Elastica/Query/FuzzyLikeThis.php215
1 files changed, 215 insertions, 0 deletions
diff --git a/vendor/ruflin/elastica/lib/Elastica/Query/FuzzyLikeThis.php b/vendor/ruflin/elastica/lib/Elastica/Query/FuzzyLikeThis.php
new file mode 100644
index 00000000..ffa34a81
--- /dev/null
+++ b/vendor/ruflin/elastica/lib/Elastica/Query/FuzzyLikeThis.php
@@ -0,0 +1,215 @@
+<?php
+
+namespace Elastica\Query;
+
+/**
+ * Fuzzy Like This query
+ *
+ * @category Xodoa
+ * @package Elastica
+ * @author Raul Martinez, Jr <juneym@gmail.com>
+ * @link http://www.elasticsearch.org/guide/reference/query-dsl/flt-query.html
+ */
+class FuzzyLikeThis extends AbstractQuery
+{
+ /**
+ * Field names
+ *
+ * @var array Field names
+ */
+ protected $_fields = array();
+
+ /**
+ * Like text
+ *
+ * @var string Like text
+ */
+ protected $_likeText = '';
+
+ /**
+ * Ignore term frequency
+ *
+ * @var boolean ignore term frequency
+ */
+ protected $_ignoreTF = false;
+
+ /**
+ * Max query terms value
+ *
+ * @var int Max query terms value
+ */
+ protected $_maxQueryTerms = 25;
+
+ /**
+ * minimum similarity
+ *
+ * @var int minimum similarity
+ */
+ protected $_minSimilarity = 0.5;
+
+ /**
+ * Prefix Length
+ *
+ * @var int Prefix Length
+ */
+ protected $_prefixLength = 0;
+
+ /**
+ * Boost
+ *
+ * @var float Boost
+ */
+ protected $_boost = 1.0;
+
+ /**
+ * Analyzer
+ *
+ * @var sting Analyzer
+ */
+ protected $_analyzer;
+
+
+ /**
+ * Adds field to flt query
+ *
+ * @param array $fields Field names
+ * @return \Elastica\Query\FuzzyLikeThis Current object
+ */
+ public function addFields(array $fields)
+ {
+ $this->_fields = $fields;
+
+ return $this;
+ }
+
+ /**
+ * Set the "like_text" value
+ *
+ * @param string $text
+ * @return \Elastica\Query\FuzzyLikeThis This current object
+ */
+ public function setLikeText($text)
+ {
+ $text = trim($text);
+ $this->_likeText = $text;
+
+ return $this;
+ }
+
+ /**
+ * Set the "ignore_tf" value (ignore term frequency)
+ *
+ * @param bool $ignoreTF
+ * @return \Elastica\Query\FuzzyLikeThis Current object
+ */
+ public function setIgnoreTF($ignoreTF)
+ {
+ $this->_ignoreTF = (bool) $ignoreTF;
+
+ return $this;
+ }
+
+ /**
+ * Set the minimum similarity
+ *
+ * @param int $value
+ * @return \Elastica\Query\FuzzyLikeThis This current object
+ */
+ public function setMinSimilarity($value)
+ {
+ $value = (float) $value;
+ $this->_minSimilarity = $value;
+
+ return $this;
+ }
+
+ /**
+ * Set boost
+ *
+ * @param float $value Boost value
+ * @return \Elastica\Query\FuzzyLikeThis Query object
+ */
+ public function setBoost($value)
+ {
+ $this->_boost = (float) $value;
+
+ return $this;
+ }
+
+ /**
+ * Set Prefix Length
+ *
+ * @param int $value Prefix length
+ * @return \Elastica\Query\FuzzyLikeThis
+ */
+ public function setPrefixLength($value)
+ {
+ $this->_prefixLength = (int) $value;
+
+ return $this;
+ }
+
+ /**
+ * Set max_query_terms
+ *
+ * @param int $value Max query terms value
+ * @return \Elastica\Query\FuzzyLikeThis
+ */
+ public function setMaxQueryTerms($value)
+ {
+ $this->_maxQueryTerms = (int) $value;
+
+ return $this;
+ }
+
+ /**
+ * Set analyzer
+ *
+ * @param string $text Analyzer text
+ * @return \Elastica\Query\FuzzyLikeThis
+ */
+ public function setAnalyzer($text)
+ {
+ $text = trim($text);
+ $this->_analyzer = $text;
+
+ return $this;
+ }
+
+ /**
+ * Converts fuzzy like this query to array
+ *
+ * @return array Query array
+ * @see \Elastica\Query\AbstractQuery::toArray()
+ */
+ public function toArray()
+ {
+ if (!empty($this->_fields)) {
+ $args['fields'] = $this->_fields;
+ }
+
+ if (!empty($this->_boost)) {
+ $args['boost'] = $this->_boost;
+ }
+
+ if (!empty($this->_likeText)) {
+ $args['like_text'] = $this->_likeText;
+ }
+
+ if (!empty($this->_analyzer)) {
+ $args['analyzer'] = $this->_analyzer;
+ }
+
+
+ $args['min_similarity'] = ($this->_minSimilarity > 0) ? $this->_minSimilarity : 0;
+
+ $args['prefix_length'] = $this->_prefixLength;
+ $args['ignore_tf'] = $this->_ignoreTF;
+ $args['max_query_terms'] = $this->_maxQueryTerms;
+
+ $data = parent::toArray();
+ $args = array_merge($args, $data['fuzzy_like_this']);
+
+ return array('fuzzy_like_this' => $args);
+ }
+}