yii框架引入sphinx类 及使用
1.在yii框架 根目录下建立 文件夹 sphinx
2.把sphinxapi.php放到sphinx文件中
3.在config/web.php文件中加入一句话
4.控制器调用sphinx类Yii::$classMap['SphinxClient']='@app/sphinx/sphinxapi.php';
$sphinx= new \SphinxClient();
5.链接sphinx$sphinx->SetServer('127.0.0.1', 9312);
6.设置查询模式查询出结果//根据某个字段进行查询模式 $sphinx->SetMatchMode ( SPH_MATCH_EXTENDED2 ); $result = $sphinx->query('@title 你好', "*");//‘title’ 字段名 ‘你好’关键字 //根据全部字段进行查询 //$sphinx-> SetMatchMode(SPH_MATCH_ANY);//搜索 //$sphinx -> SetSortMode(SPH_SORT_EXTENDED, '@id desc'); //排序 //$result = $sphinx-> Query($name,"*");
7.根据查询出的id查出数据库中的数据
$id=implode(',',array_keys($result['matches']));
$search=Search::find()->where('id in ('.$id.')')->asArray()->all();
print_r($search);
yii框架关键字标红
8.运用sphinx里的
BuildExcerpts属性('从数据库查询出来的东西必须为一维数组','索引名字我这里是 (mysal)','收索的关键字','标红的一个方法,我这里定义的是$opts')
9.具体的做法
//定义标红方法 $opts = array('before_match'=>'<font style="font-weight:bold;color:red">','after_match'=>'</font>'); //循环标红 foreach($search as $v){ $res=$sphinx->BuildExcerpts($v,'mysql','你好',$opts);// "mysql" 我的索引名 “你好”要标红的关键字; } print_r($res);
这时你就会发现输出的数组中关键字已经标红了;