Yii框架结合sphinx,Ajax实现搜索分页功能示例
发布时间:2020-12-12 21:47:26 所属栏目:PHP教程 来源:网络整理
导读:本篇章节讲解Yii框架结合sphinx,Ajax实现搜索分页功能的方法。供大家参考研究具体如下: 效果图: 控制器: request->get('sou'); $p1=Yii::$app->request->get('p1'); $p2=Yii::$app->request->get('p2'); //echo $sou.$p1.$p2;die; //sphinx搜索 $
本篇章节讲解Yii框架结合sphinx,Ajax实现搜索分页功能的方法。分享给大家供大家参考,具体如下: 效果图: 控制器: request->get('sou');
$p1=Yii::$app->request->get('p1');
$p2=Yii::$app->request->get('p2');
//echo $sou.$p1.$p2;die;
//sphinx搜索
$cl = new SphinxClient();
$cl -> SetServer('127.0.0.1',9312);
$cl -> SetConnectTimeout(3);
$cl -> SetArrayResult(true);
if($sou)
{
//只搜索条件
$cl -> SetMatchMode(SPH_MATCH_ANY);
}
else
{
//全局扫描
$cl -> SetMatchMode(SPH_MATCH_FULLSCAN);
}
//设置价格(注意:创建索引时,价格属性定义为int)
if($p1&&$p2)
{
$cl->SetFilterRange('price',$p1,$p2);
}
//搜索查询关键字
$res = $cl->Query($sou,"mysql_goods");
//ajax分页
$model=new Goods();
foreach ($res['matches'] as $key => $val)
{
$ids[] = $val['id'];
}
//查询条件数据
$query = $model->find()->where(['id'=>$ids]);
$countQuery = clone $query;
$pages = new Pagination(['totalCount' => $countQuery->count(),'defaultPageSize'=>3]);
//分页
$models = $query->offset($pages->offset)
->limit($pages->limit)
->all();
//关键字变红
foreach($models as $k=>$v)
{
$models[$k]['goods_name']=str_replace("$sou","$sou",$v['goods_name']);//将关键字替换成红色字体
}
//显示列表,分配数据
return $this->render('index',[
'res' => $models,'pages' => $pages,'sou'=>$sou,'p1'=>$p1,'p2'=>$p2
]);
}
}
?>
视图层: 'index.php?r=sou/index','method' => 'get'
]) ?>
ID
商品名称 |
商品价格 |
|
更多关于Yii相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《》
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!