* * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/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 bool 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 $this */ public function addFields(array $fields) { $this->_fields = $fields; return $this; } /** * Set the "like_text" value. * * @param string $text * * @return $this */ public function setLikeText($text) { $text = trim($text); $this->_likeText = $text; return $this; } /** * Set the "ignore_tf" value (ignore term frequency). * * @param bool $ignoreTF * * @return $this */ public function setIgnoreTF($ignoreTF) { $this->_ignoreTF = (bool) $ignoreTF; return $this; } /** * Set the minimum similarity. * * @param int $value * * @return $this */ public function setMinSimilarity($value) { $value = (float) $value; $this->_minSimilarity = $value; return $this; } /** * Set boost. * * @param float $value Boost value * * @return $this */ public function setBoost($value) { $this->_boost = (float) $value; return $this; } /** * Set Prefix Length. * * @param int $value Prefix length * * @return $this */ public function setPrefixLength($value) { $this->_prefixLength = (int) $value; return $this; } /** * Set max_query_terms. * * @param int $value Max query terms value * * @return $this */ public function setMaxQueryTerms($value) { $this->_maxQueryTerms = (int) $value; return $this; } /** * Set analyzer. * * @param string $text Analyzer text * * @return $this */ 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->_analyzer)) { $args['analyzer'] = $this->_analyzer; } $args['min_similarity'] = ($this->_minSimilarity > 0) ? $this->_minSimilarity : 0; $args['like_text'] = $this->_likeText; $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); } }