yii sphinx

控制器

<?php  
namespace app\controllers;  
use Yii;  
use yii\web\Controller;  
use app\models\Login;
use SphinxClient;  

class SphinxsearchController extends Controller  
{  
    public $enableCsrfValidation = false;  

    public function actionSearchindex()  
    {  
        // echo 4;
        $db=new Login;  
        $a=$db->find()->asArray()->all();  
        return $this->render('searchindex');  
    }  

    public function actionShou()  
    {  
       include'./sphinxapi.php';
        //接值
        $field=\yii::$app->request->post('field');  
        $zhi=\yii::$app->request->post('zhi');  
        // echo $zhi;die;
        //实例化
        $sphinx = new SphinxClient();
        // print_r($sphinx);die;  
        $sphinx->SetServer('127.0.0.1',9312);  
        //将查询看作一个Sphinx内部查询语言的表达式  
        $sphinx->SetMatchMode (SPH_MATCH_EXTENDED2);

        //@符号屏蔽错误  第一个参数中 $filed是字段名 $zhi是你要在这个字段中搜索的值  第二个参数是规则  
        $res=$sphinx->Query("@".$field.' '.$zhi,"*");
        // print_r($res);
        //array_keys是获取数组中的键(获取到的是一个数组)  然后将数组转换成字符串  
        $id=implode(',',array_keys($res['matches']));  

        $val=Login::find()->where("id in ($id)")->asArray()->All();  
        //print_r($val);die;
        //高亮显示关键字
        foreach ($val as $k =>$v)   
        {  
            $val[$k]['add']=str_replace($zhi,"<font color='red'>$zhi</font>",$v['add']);  
            $val[$k]['ip']=str_replace($zhi,"<font color='red'>$zhi</font>",$v['ip']);   
        }  
        echo json_encode($val);

    }  
}  
?> 

models

<?php
Namespace app\models;
use Yii;
use yii\base\Model;
use yii\db\ActiveRecord;

Class Login extends ActiveRecord{
    //添加登陆信息
    public function login_add($data){
        $db = \YII::$app->db;
        //返回的是受影响的条数
        $res =$db->createCommand()->insert('login',$data)->execute();
        return $res;
    }

    //查询全部的登陆信息
    public function get_login_info(){
        $db = \YII::$app->db;
        $res = $db->createCommand('SELECT * FROM login')->queryall();
        return $res;
    }








}

?>


视图

<html lang="en-US">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script src="jquery.12.mini.js"></script>  
</head>
<body>
<center>
    <h1>搜索</h1>
    <div>
    <!-- <form> -->
        搜索字段:
        <select id="field">
            <option value="*">全部字段</option>  
            <option value="add">地区</option>  
            <option value="ip">ip</option>   
        </select>
        <input type="text" name="search" id="zhi"/>&nbsp;
        <input type="button" class="fun" value="搜索"/>
    <!-- </form> -->
    </div>
    <br/>
    <table style="width:400px;">
        <tr id="lists">  
            <td>地区</td>  
            <td>iP</td>  
        </tr>  
        <tr class="contents"></tr>  
    </table>
</center>    
</body>
</html>


<script>  
    $(".fun").click(function(){  
        var field = $("#field").val();  
        var zhi = $("#zhi").val();
        var url="index.php?r=sphinxsearch/shou";
        var send={field:field,zhi:zhi}
        $.post(url,send,function(msg){  
            // alert(msg);
            //将获取到的东西追加到表中
            var data= eval("("+msg+")");  
            var tr='';  
            for(i in data)  
            {  
                tr+='<tr class="contents">';  
                tr+="<td>"+data[i].add+"</td>"  
                tr+="<td>"+data[i].ip+"</td>"   
                tr+='</tr>';  
            }  
            $(".contents").remove();  
            $("#lists").after(tr);     
        })  
    })  
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值