Location: PHPKode > scripts > Fantastic ElasticSearch > wordpress-fantastic-elasticsearch-1.1.2/lib/Elastica/Query/QueryString.php
<?php
/**
 * QueryString query
 *
 * @uses     Elastica_Query_Abstract
 * @category Xodoa
 * @package  Elastica
 * @author   Nicolas Ruflin <hide@address.com>, Jasper van Wanrooy <hide@address.com>
 * @link     http://www.elasticsearch.org/guide/reference/query-dsl/query-string-query.html
 */
class Elastica_Query_QueryString extends Elastica_Query_Abstract
{
    /**
     * Query string
     *
     * @var string Query string
     */
    protected $_queryString = '';

    /**
     * Creates query string object. Calls setQuery with argument
     *
     * @param string $queryString OPTIONAL Query string for object
     */
    public function __construct($queryString = '')
    {
        $this->setQuery($queryString);
    }

    /**
     * Sets a new query string for the object
     *
     * @param  string                     $query Query string
     * @return Elastica_Query_QueryString Current object
     */
    public function setQuery($query = '')
    {
        if (!is_string($query)) {
            throw new Elastica_Exception_Invalid('Parameter has to be a string');
        }

        return $this->setParam('query', $query);
    }

    /**
     * Sets the default operator AND or OR
     *
     * If no operator is set, OR is chosen
     *
     * @param  string                     $queryString Query string
     * @return Elastica_Query_QueryString Current object
     * @deprecated Please use setQuery instead
     */
    public function setQueryString($queryString)
    {
        return $this->setQuery($queryString);
    }

    /**
     * Sets the default field
     *
     * If no field is set, _all is chosen
     *
     * @param  string                     $field Field
     * @return Elastica_Query_QueryString Current object
     */
    public function setDefaultField($field)
    {
        return $this->setParam('default_field', $field);
    }

    /**
     * Sets the default operator AND or OR
     *
     * If no operator is set, OR is chosen
     *
     * @param  string                     $operator Operator
     * @return Elastica_Query_QueryString Current object
     */
    public function setDefaultOperator($operator)
    {
        return $this->setParam('default_operator', $operator);
    }

    /**
     * Sets the analyzer to analyze the query with.
     *
     * @param  string                     $analyzer Analyser to use
     * @return Elastica_Query_QueryString Current object
     */
    public function setAnalyzer($analyzer)
    {
        return $this->setParam('analyzer', $analyzer);
    }

    /**
     * Sets the parameter to allow * and ? as first characters.
     *
     * If not set, defaults to true.
     *
     * @param  bool                       $allow
     * @return Elastica_Query_QueryString Current object
     */
    public function setAllowLeadingWildcard($allow = true)
    {
        return $this->setParam('allow_leading_wildcard', (bool) $allow);
    }

    /**
     * Sets the parameter to auto-lowercase terms of some queries.
     *
     * If not set, defaults to true.
     *
     * @param  bool                       $lowercase
     * @return Elastica_Query_QueryString Current object
     */
    public function setLowercaseExpandedTerms($lowercase = true)
    {
        return $this->setParam('lowercase_expanded_terms', (bool) $lowercase);
    }

    /**
     * Sets the paramater to enable the position increments in result queries.
     *
     * If not set, defaults to true.
     *
     * @param  bool                       $enabled
     * @return Elastica_Query_QueryString Current object
     */
    public function setEnablePositionIncrements($enabled = true)
    {
        return $this->setParam('enable_position_increments', (bool) $enabled);
    }

    /**
     * Sets the fuzzy prefix length parameter.
     *
     * If not set, defaults to 0.
     *
     * @param  int                        $length
     * @return Elastica_Query_QueryString Current object
     */
    public function setFuzzyPrefixLength($length = 0)
    {
        return $this->setParam('fuzzy_prefix_length', (int) $length);
    }

    /**
     * Sets the fuzzy minimal similarity parameter.
     *
     * If not set, defaults to 0.5
     *
     * @param  float                      $minSim
     * @return Elastica_Query_QueryString Current object
     */
    public function setFuzzyMinSim($minSim = 0.5)
    {
        return $this->setParam('fuzzy_min_sim', (float) $minSim);
    }

    /**
     * Sets the phrase slop.
     *
     * If zero, exact phrases are required.
     * If not set, defaults to zero.
     *
     * @param  int                        $phraseSlop
     * @return Elastica_Query_QueryString Current object
     */
    public function setPhraseSlop($phraseSlop = 0)
    {
        return $this->setParam('phrase_slop', (int) $phraseSlop);
    }

    /**
     * Sets the boost value of the query.
     *
     * If not set, defaults to 1.0.
     *
     * @param  float                      $boost
     * @return Elastica_Query_QueryString Current object
     */
    public function setBoost($boost = 1.0)
    {
        return $this->setParam('boost', (float) $boost);
    }

    /**
     * Allows analyzing of wildcard terms.
     *
     * If not set, defaults to false
     *
     * @param  bool                       $analyze
     * @return Elastica_Query_QueryString Current object
     */
    public function setAnalyzeWildcard($analyze = true)
    {
        return $this->setParam('analyze_wildcard', (bool) $analyze);
    }

    /**
     * Sets the param to automatically generate phrase queries.
     *
     * If not set, defaults to false.
     *
     * @param  bool                       $autoGenerate
     * @return Elastica_Query_QueryString Current object
     */
    public function setAutoGeneratePhraseQueries($autoGenerate = true)
    {
        return $this->setParam('auto_generate_phrase_queries', (bool) $autoGenerate);
    }

    /**
     * Sets the fields
     *
     * If no fields are set, _all is chosen
     *
     * @param  array                      $fields Fields
     * @return Elastica_Query_QueryString Current object
     */
    public function setFields(array $fields)
    {
        if (!is_array($fields)) {
            throw new Elastica_Exception_Invalid('Parameter has to be an array');
        }

        return $this->setParam('fields', $fields);
    }

    /**
     * Whether to use bool or dis_max quueries to internally combine results for multi field search.
     *
     * @param  bool                       $value Determines whether to use
     * @return Elastica_Query_QueryString Current object
     */
    public function setUseDisMax($value = true)
    {
        return $this->setParam('use_dis_max', (bool) $value);
    }

    /**
     * When using dis_max, the disjunction max tie breaker.
     *
     * If not set, defaults to 0.
     *
     * @param  int                        $tieBreaker
     * @return Elastica_Query_QueryString Current object
     */
    public function setTieBraker($tieBreaker = 0)
    {
        return $this->setParam('tie_breaker', (int) $tieBreaker);
    }

    /**
     * Set a re-write condition. See https://github.com/elasticsearch/elasticsearch/issues/1186 for additional information
     *
     * @param  string         $rewrite
     * @return Elastica_Param
     */
    public function setRewrite($rewrite = "")
    {
        return $this->setParam('rewrite', $rewrite);
    }

    /**
     * Converts query to array
     *
     * @see Elastica_Param::toArray()
     * @return array Query array
     */
    public function toArray()
    {
        return array('query_string' => array_merge(array('query' => $this->_queryString), $this->getParams()),);
    }
}
Return current item: Fantastic ElasticSearch