private function applyOptions(ESphinxQlCriteria $criteria, ESphinxSearchCriteria $queryCriteria) { $options = array(); if ($queryCriteria->maxMatches !== null) { $options['max_matches'] = $queryCriteria->maxMatches; } if ($queryCriteria->cutOff !== null) { $options['cutoff'] = $queryCriteria->cutOff; } if ($idxWeights = $queryCriteria->getIndexWeights()) { $options['index_weights'] = '(' . $this->implodeKV($idxWeights, '=') . ')'; } if ($fieldsWeights = $queryCriteria->getFieldWeights()) { $options['field_weights'] = '(' . $this->implodeKV($fieldsWeights, '=') . ')'; } if ($queryCriteria->comment) { $options['comment'] = $queryCriteria->comment; } if ($queryCriteria->booleanSimplify !== null) { $options['boolean_simplify'] = $queryCriteria->booleanSimplify; } if (($revScan = $queryCriteria->getReverseScan()) !== null) { $options['reverse_scan'] = $revScan ? 1 : 0; } if (($sortMode = $queryCriteria->getSortMethod()) !== null) { $options['sort_method'] = $sortMode; } if ($queryCriteria->globalIdf !== null) { $options['global_idf'] = $queryCriteria->globalIdf; } if (($idf = $queryCriteria->getIdf()) !== null) { $options['idf'] = $idf; } $options['max_query_time'] = $queryCriteria->queryTimeout !== null ? $queryCriteria->queryTimeout : $this->queryTimeout; // ranking mode if ($queryCriteria->rankingMode) { $ranker = ESphinxRank::item($queryCriteria->rankingMode); if ($queryCriteria->rankingMode != ESphinxRank::EXPR) { $options['ranker'] = $ranker; } else { $options['ranker'] = $ranker . "('" . $queryCriteria->rankingExpression . "')"; } } $criteria->option = $this->implodeKV($options, '='); }