Example #1
0
 public function testRank()
 {
     $this->assertEquals(ESphinxRank::PROXIMITY_BM25, SPH_RANK_PROXIMITY_BM25);
     $this->assertEquals(ESphinxRank::BM25, SPH_RANK_BM25);
     $this->assertEquals(ESphinxRank::NONE, SPH_RANK_NONE);
     $this->assertEquals(ESphinxRank::WORDCOUNT, SPH_RANK_WORDCOUNT);
     $this->assertEquals(ESphinxRank::PROXIMITY, SPH_RANK_PROXIMITY);
     $this->assertEquals(ESphinxRank::MATCHANY, SPH_RANK_MATCHANY);
     $this->assertEquals(ESphinxRank::FIELDMASK, SPH_RANK_FIELDMASK);
     $this->assertEquals(ESphinxRank::SPH04, SPH_RANK_SPH04);
     $this->assertEquals(ESphinxRank::EXPR, SPH_RANK_EXPR);
     $this->assertEquals(ESphinxRank::TOTAL, SPH_RANK_TOTAL);
     $this->assertCount(9, ESphinxRank::items());
 }
 protected function applyRankMode(ESphinxSearchCriteria $criteria)
 {
     if (!$criteria->rankingMode) {
         return;
     }
     if (!ESphinxRank::isValid($criteria->rankingMode)) {
         throw new ESphinxException("Rank mode {$criteria->rankingMode} is not defined");
     }
     $this->sphinxClient->SetRankingMode($criteria->rankingMode, $criteria->rankingExpression);
 }
 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, '=');
 }