美文网首页
php操作Sphinx

php操作Sphinx

作者: 老衲灬 | 来源:发表于2018-09-18 23:52 被阅读68次

    使用PHP API操作 Sphinx

    1、基础操作

    步骤1:复制sphinx\api目录中的接口文件sphinxapi.php放到站点目录
    步骤2:在站点目录创建test.php引入该文件

    #步骤1:引入sphinx接口文件
    require './sphinxapi.php';
    
    #步骤2:实例化对象
    $sp = new SphinxClient;
    
    #步骤3:设置服务
    $sp->SetServer('localhost', 9312);
    
    #步骤4:设置匹配模式
    #$sp->SetMatchMode(SPH_MATCH_ALL); //默认就是SPH_MATCH_ALL
    
    #步骤5:设置查询条数
    $sp->SetLimits(0, 5000);
    
    #步骤6:发送查询
    $rs = $sp->query('冬天', 'music');
    
    echo '<pre>';
    print_r($rs);
    

    2、匹配模式

    模式设置语法:$sp->SetMatchMode(常量)
    常量参数:
    -> SPH_MATCH_ALL:匹配所有词(默认)

    $sp->query('冬天的秘密', 'music'):“冬天”“的”“秘密”三个分词都必须存在,但是位置不限
    

    -> SPH_MATCH_ANY:匹配一个词

    $sp->query('冬天的秘密', 'music'):“冬天”“的”“秘密”只要有一个存在,就匹配
    注意:此模式结果不一定准确
    

    -> SPH_MATCH_PHRASE:匹配整个词

    $sp->query('冬天的秘密', 'music'):“冬天的秘密”必须存在,位置必须一致
    

    -> SPH_MATCH_BOOLEAN:将查询看作一个布尔表达式

    $sp->query('冬天 ! 秘密', 'music'):匹配’冬天’关键字,但是不能有’秘密’
    $sp->query('冬天 & 秘密', 'music'):匹配’冬天’并且有’秘密’
    $sp->query('冬天 | 秘密', 'music'):匹配’冬天’或’秘密’
    

    -> SPH_MATCH_EXTENDED:查询看做一个sphinx的表达式

    $rs = $sp->query('@content 秘密 @author 传雄', 'music'):查找content字段=‘秘密’而且author字段=‘传雄’
    

    3、获取查询结果

    #步骤1:引入sphinx接口文件
    require './sphinxapi.php';
    #步骤2:实例化对象
    $sp = new SphinxClient;
    #步骤3:设置服务
    $sp->SetServer('localhost', 9312);
    #步骤4:设置匹配模式
    $sp->SetMatchMode(SPH_MATCH_ALL);
    #步骤5:设置查询条数
    $sp->SetLimits(0, 5000);
    #步骤6:发送查询
    $rs = $sp->query('冬天', 'music');
    //如果查询到结果,则获取所有数据库数据ID
    if (!isset($rs['matches'])) {
            echo "未查询到相关数据";
            die;
    }
    $ids = array_keys($rs['matches']);
    $ids = implode(',', $ids);
    //获取数据
    $pdo = new PDO('mysql:dbname=sphinx', 'root', '666666');
    $pdoStatementObj = $pdo->query("select * from music where id in ($ids)");
    $musics = $pdoStatementObj->fetchAll(PDO::FETCH_ASSOC);
    //循环显示数据
    foreach ($musics as $music) {
        echo $music['id'] . '__' . $music['author'] . '<hr />';
    }
    

    相关文章

      网友评论

          本文标题:php操作Sphinx

          本文链接:https://www.haomeiwen.com/subject/jlfbnftx.html