Example #1
0
 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;
 }