|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2017-2-9 22:46:17
|
显示全部楼层
类是从之前的项目拷贝过来的,之前用的速度都ok。。。理论上来说应该不影响才对,实在想不明白是什么原因了
- <?php
- defined('BASEPATH') OR exit('No direct script access allowed');
- class Sphinx {
- public $api='';
- public $index = 'arczw_content';
- public $host = 'localhost';
- public $port = '9312';
-
- public function __construct(){
- require_once(APPPATH.'libraries\sdk\sphinx\sphinxapi.php');
- $this->api=new SphinxClient ();
- }
-
- public function initServer(){
- $this->api->SetServer($this->host,$this->port);
- }
-
- public function setIndex($index){
- if(is_string($index)){
- $this->index = $index;
- }
- }
-
- public function search($q,$limit=20,$rejectArray = array(),$SetArray = array(),$idRangeStart=0 ,$idRangeEnd=0 ,$sortQuery = '' ){
- if($this->api =='' || $this->index=='') return false;
- $this->api->ResetFilters();//重置过滤信息,把之前设置的过滤设置清楚
- $this->api->SetIDRange($idRangeStart,$idRangeEnd);//设置文章id范围,两个参数都是0是指不设置
- !empty($sortQuery) && $this->api->SetSortMode(SPH_SORT_EXTENDED,$sortQuery);//sql类排序模式,根据字段属性排序,具体用法找文档。默认值是指根据id进行降序排列
- !empty($rejectArray)&&$this->api->SetFilter('@id',$rejectArray,true);//id过滤设置,过滤掉输入的rejectArray数组里面的id值,与普通的字段过滤不一样,id过滤需要携程"@id"
- foreach($SetArray as $k => $v){
- !empty($k) && !empty($v) && $this->api->SetFilter($k,$v);
- }
- $this->api->SetLimits(0,$limit);//设置获取文章的数量
- $res = $this->api->Query($q,$this->index);
- echo $q.$this->index;
- return $res;
- }
- }
复制代码 |
|