/** * @param string[] $fields * @param string $queryString * @param int $phraseSlop * @param boolean $isRescore * @return \Elastica\Query\Simple */ private function buildSearchTextQueryForFields(array $fields, $queryString, $phraseSlop, $isRescore) { $query = new \Elastica\Query\QueryString($queryString); $query->setFields($fields); $query->setAutoGeneratePhraseQueries(true); $query->setPhraseSlop($phraseSlop); $query->setDefaultOperator('AND'); $query->setAllowLeadingWildcard($this->config->get('CirrusSearchAllowLeadingWildcard')); $query->setFuzzyPrefixLength(2); $query->setRewrite('top_terms_boost_1024'); $states = $this->config->get('CirrusSearchQueryStringMaxDeterminizedStates'); if (isset($states)) { // Requires ES 1.4+ $query->setParam('max_determinized_states', $states); } return $this->wrapInSaferIfPossible($query, $isRescore); }