private function get_sugg_trigrams($word, SearchEngineOptions $options) { $trigrams = $this->BuildTrigrams($word); $query = "\"{$trigrams}\"/1"; $len = strlen($word); $this->resetSphinx(); $this->suggestionClient->SetMatchMode(SPH_MATCH_EXTENDED2); $this->suggestionClient->SetRankingMode(SPH_RANK_WORDCOUNT); $this->suggestionClient->SetFilterRange("len", $len - 2, $len + 4); $this->suggestionClient->SetSortMode(SPH_SORT_EXTENDED, "@weight DESC"); $this->suggestionClient->SetLimits(0, 10); $indexes = []; foreach ($options->getDataboxes() as $databox) { $indexes[] = 'suggest' . $this->CRCdatabox($databox); } $index = implode(',', $indexes); $res = $this->suggestionClient->Query($query, $index); if ($this->suggestionClient->Status() === false) { return []; } if (!$res || !isset($res["matches"])) { return []; } $words = []; foreach ($res["matches"] as $match) { $words[] = $match['attrs']['keyword']; } return $words; }
public function CheckSphinxRunning() { $SphinxSearchModel = new SphinxClient(); ///@todo fix this from getting new instance of sphinxclient $Status = $SphinxSearchModel->Status(); //will return an array of misc info if sphinx is running if (!empty($Status)) { parent::Update(SS_SUCCESS, 'SearchdRunning', TRUE); //save as running return $Status; //yes, it is } else { parent::Update(SS_SUCCESS, 'SearchdRunning', FALSE); //save as not running return FALSE; //not running } }