美文网首页
sphinx(七)sphinx匹配模式

sphinx(七)sphinx匹配模式

作者: camellias__ | 来源:发表于2021-02-18 13:55 被阅读0次

Sphinx匹配模式

语法: $sp -> SetMatchMode(常量)

SPH_MATCH_ALL            匹配所有词(默认)
SPH_MATCH_ANY            匹配一个词
SPH_MATCH_PHRASE     匹配整一个词
SPH_MATCH_BOOLEAN   将查询看作一个布尔表达式
SPH_MATCH_EXTENDED  查询看做一个sphinx的表达式

举例: 我喜欢PHP

分词: 我 喜欢 PHP

准备工作: 先停止服务-> 创建索引->启动服务

1:匹配所有词(SPH_MATCH_ALL)

说明:我 喜欢 PHP 字段都要存在, 位置不限

<?php
#步骤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('我喜欢PHP', 'music');
echo '<pre>';
print_r($rs); #

2:匹配一个词(SPH_MATCH_ANY)

说明: 我 喜欢 PHP 只要有一个存在,就匹配

#步骤4:设置匹配模式
$sp->SetMatchMode(SPH_MATCH_ANY);

3:匹配整个词(SPH_MATCH_PHRASE)

说明: 我 喜欢 PHP 都必须存在 位置必须一致

#步骤4:设置匹配模式
$sp->SetMatchMode(SPH_MATCH_PHRASE);

4:将查询看作一个布尔表达式(SPH_MATCH_BOOLEAN)

#步骤4:设置匹配模式
$sp->SetMatchMode(SPH_MATCH_BOOLEAN);

5:查询看做一个sphinx的表达式(SPH_MATCH_EXTENDED)

说明: 查询指定字段的内容 @字段 内容

举例: @title 内容 @content 内容 @author 内容

#步骤4:设置匹配模式
$sp->SetMatchMode(SPH_MATCH_EXTENDED);
#步骤5:设置查询条数
$sp->SetLimits(0, 5000);
#步骤6:发送查询
$rs = $sp->query('@content PHP @author 校长'); #内容=PHP并作者=校长
echo '<pre>';
print_r($rs); #

这里需要注意一下:

官方的sphinxapi.php中设置查询模式的代码如下所示:

    /// set matching mode
    function SetMatchMode ( $mode )
{
// trigger_error 应该注释,否则访问即报错
        trigger_error ( 'DEPRECATED: Do not call this method or, even better, use SphinxQL instead of an API', E_USER_DEPRECATED );
        assert ( $mode==SPH_MATCH_ALL
            || $mode==SPH_MATCH_ANY
            || $mode==SPH_MATCH_PHRASE
            || $mode==SPH_MATCH_BOOLEAN
            || $mode==SPH_MATCH_EXTENDED
            || $mode==SPH_MATCH_FULLSCAN
            || $mode==SPH_MATCH_EXTENDED2 );
        $this->_mode = $mode;
    }

我们需要将trigger_error这行代码注释。否则访问就报错。

有好的建议,请在下方输入你的评论。

欢迎访问个人博客
https://guanchao.site

相关文章

网友评论

      本文标题:sphinx(七)sphinx匹配模式

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