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

    TP通過sphinxapi接口實現全文搜索
    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.調用接口,代碼如下

    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);  //條數限制為200條
     
            $res=$sp->Query($searchWord,'newindex');  //通過索引查找索索結果,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()是我自己定義的方法,改成自己數據庫操作即可
                
                $total = $res['total']; //查詢到的總量
     
                $finalResult = array('result'=>$result,'total'=>$total);
     
                
                print_r($finalResult);
     
     
            }
            else
            {
                return 0;
            }
            
     
        }

    結果展示:

    Array
    (
        [error] => 
        [warning] => 
        [status] => 0
        [fields] => Array
            (
                [0] => title
                [1] => img_cover
                [2] => url_link
                [3] => ispublish
            )
     
        [attrs] => Array
            (
                [sid] => 1
                [updatetime] => 2
            )
        
        //匹配結果
        [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  //查詢結果總量
        [total_found] => 117
        [time] => 0.000
        [words] => Array
            (
                [元] => Array
                    (
                        [docs] => 625
                        [hits] => 638
                    )
     
                [旦] => Array
                    (
                        [docs] => 122
                        [hits] => 124
                    )
     
            )

    最終返回結果如下

    ?

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

    開通會員,享受整站包年服務
    国产呦精品一区二区三区网站|久久www免费人咸|精品无码人妻一区二区|久99久热只有精品国产15|中文字幕亚洲无线码