當前位置:首頁 > IT技術 > Windows編程 > 正文

TP通過sphinxapi接口實現(xiàn)全文搜索
2021-09-28 16:59:24

1.首先先在服務器上安裝好sphinx并且建立好索引文件,具體安裝步驟參考以下鏈接

windows下:?https://www.cnblogs.com/life_lt/p/15348746.html

linux下:https://www.cnblogs.com/life_lt/p/15348533.html

2.下載?sphinxapi.php(點擊下載)并且放入到自己的項目中

3.調(diào)用接口,代碼如下

public function getSphinxData(){
 
        $searchWord = "元旦";
        
        $sp=new SphinxClient();
        $sp->SetServer('127.0.0.1',9312);
        $sp->SetArrayResult(true);
        $sp->SetMatchMode(SPH_MATCH_ALL);
        $sp->SetSortMode(SPH_SORT_ATTR_DESC,'updatetime');  //排序字段
        $sp->SetLimits(0,200);  //條數(shù)限制為200條
 
        $res=$sp->Query($searchWord,'newindex');  //通過索引查找索索結(jié)果,newindex為配置中的索引名稱        
 
     
        if(isset($res['matches'])&&count($res['matches'])>0)
        {
 
            $sql='select * from yourtable where id in(';
            
 
            foreach ($res['matches'] as $v)
            {
                $sql.=$v['id'].',';
            }
            $sql=trim($sql,',').')';
 
            
            $searchModel = M('search');  //實例化model,這里是我自己程序中的實例化,用的時候改成自己的操作
            $result = $searchModel->fetchAll($sql); //查庫操作,fetchAll()是我自己定義的方法,改成自己數(shù)據(jù)庫操作即可
            
            $total = $res['total']; //查詢到的總量
 
            $finalResult = array('result'=>$result,'total'=>$total);
 
            
            print_r($finalResult);
 
 
        }
        else
        {
            return 0;
        }
        
 
    }

結(jié)果展示:

Array
(
    [error] => 
    [warning] => 
    [status] => 0
    [fields] => Array
        (
            [0] => title
            [1] => img_cover
            [2] => url_link
            [3] => ispublish
        )
 
    [attrs] => Array
        (
            [sid] => 1
            [updatetime] => 2
        )
    
    //匹配結(jié)果
    [matches] => Array
        (
            [0] => Array
                (
                    [id] => 79476
                    [weight] => 2613
                    [attrs] => Array
                        (
                            [sid] => 718737
                            [updatetime] => 1543464537
                        )
 
                )
 
            [1] => Array
                (
                    [id] => 79475
                    [weight] => 2613
                    [attrs] => Array
                        (
                            [sid] => 718736
                            [updatetime] => 1543464085
                        )
 
                )
 
        )
 
    [total] => 117  //查詢結(jié)果總量
    [total_found] => 117
    [time] => 0.000
    [words] => Array
        (
            [元] => Array
                (
                    [docs] => 625
                    [hits] => 638
                )
 
            [旦] => Array
                (
                    [docs] => 122
                    [hits] => 124
                )
 
        )

最終返回結(jié)果如下

?

本文摘自 :https://www.cnblogs.com/

開通會員,享受整站包年服務立即開通 >