public function testWithCriteria() { $criteriaData = array('rankingMode' => ESphinxRank::BM25, 'sortMode' => ESphinxSort::ATTR_DESC, 'sortBy' => 'field1'); $criteria = new ESphinxSearchCriteria($criteriaData); $query = new ESphinxQuery('text', 'index', $criteria); $this->assertEquals($criteria, $query->getCriteria()); }
protected function applyQuery(ESphinxQuery $query) { $this->applyCriteria($query->getCriteria()); $this->sphinxClient->AddQuery($query->getText(), $query->getIndexes()); }
private function applySelect(CDbCriteria $criteria, ESphinxQuery $query) { $criteria->select = $query->getCriteria()->select; }
/** * @param $query * @return CDbCriteria */ private function createDbCriteria(ESphinxQuery $query) { $criteria = new ESphinxQlCriteria(); // create select $criteria->select = $query->getCriteria()->select; // process conditions $queryCriteria = $query->getCriteria(); if (strlen($query->getText())) { $criteria->addCondition('MATCH(' . ESphinxQlCriteria::PARAM_PREFIX . ESphinxQlCriteria::$paramCount . ')'); $criteria->params[ESphinxQlCriteria::PARAM_PREFIX . ESphinxQlCriteria::$paramCount++] = $query->getText(); } $this->applyIdLimits($criteria, $queryCriteria); $this->applyFilters($queryCriteria->getFilters(), $criteria); $this->applyRanges($queryCriteria->getRangeFilters(), $criteria); $this->applyGroup($criteria, $queryCriteria); $this->applyOrder($criteria, $queryCriteria); $this->applyOptions($criteria, $queryCriteria); // limit $criteria->limit = $queryCriteria->limit; $criteria->offset = $queryCriteria->offset; return $criteria; }