Location: PHPKode > scripts > Fantastic ElasticSearch > wordpress-fantastic-elasticsearch-1.1.2/lib/Elastica/Query/FuzzyLikeThis.php
<?php
/**
 * Fuzzy Like This query
 *
 * @uses Elastica_Query_Abstract
 * @category Xodoa
 * @package Elastica
 * @author Raul Martinez, Jr <hide@address.com>
 * @link http://www.elasticsearch.org/guide/reference/query-dsl/flt-query.html
 */
class Elastica_Query_FuzzyLikeThis extends Elastica_Query_Abstract
{
    /**
     * Field names
     *
     * @var array Field names
     */
    protected $_fields = array();

    /**
     * Like text
     *
     * @var string Like text
     */
    protected $_likeText   = '';

    /**
     * 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;

    /**
     * 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 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;
    }

    /**
     * Converts fuzzy like this query to array
     *
     * @return array Query array
     * @see Elastica_Query_Abstract::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;
        }

        $args['min_similarity'] = ($this->_minSimilarity > 0) ? $this->_minSimilarity : 0;

        $args['prefix_length']   = $this->_prefixLength;
        $args['max_query_terms'] = $this->_maxQueryTerms;

        return array('fuzzy_like_this' => $args);
    }
}
Return current item: Fantastic ElasticSearch