第3课:Sphinx查询

1.sphinx启动
/usr/local/sphinx/bin/searchd –c        /usr/local/sphinx/etc/sphinx.conf&
/usr/local/sphinx/bin/indexer –c        /usr/local/sphinx/etc/sphinx.conf --all --rotate

2.检查索引
/usr/local/sphinx/bin/indextool -c /usr/local/sphinx/etc/sphinx.conf --check 索引名

3.通过sphinx的PHP api进行搜索
<?php
include 'sphinxapi.php';//加载Sphinx API
$sc = new SphinxClient(); //实例化Api
$sc->SetServer('10.21.0.2', 9312); //设置服务端,第一个参数sphinx服务器地址,第二个sphinx监听端口
$sc->SetArrayResult(true);
$sc->SetLimits(0, 20, 1000);
$sc->SetMaxQueryTime(10);//设置最大查询时间
$sc->SetConnectTimeout(3);//连接超时时间(非常必要,比如sphinx服务器挂了等异常情况)单位为s,秒
$res = $sc->Query('name', 'godeye.org'); //执行查询,第一个参数查询的关键字,第二个查询的索引名称,mysql索引名称(这个也是在配置文件中定义的),多个索引名称以,分开,也可以用*表示所有索引。
print_r($res);
$err = $sc->GetLastError();//获取运行中的错误,方便调试,生产环境不要用
print_r($err);
?>

搜索模式:
SPH_MATCH_ALL, 匹配所有查询分词(默认模式);
SPH_MATCH_ANY, 匹配查询词中的任意一个分词;
SPH_MATCH_PHRASE, 将整个查询看作一个词组,要求按顺序完整匹配;
SPH_MATCH_BOOLEAN, 将查询看作一个布尔表达式, 可以简单的与或非运算;
SPH_MATCH_EXTENDED2,扩展匹配模式
设置方式:
$sc->SetMatchMode(SPH_MATCH_EXTENDED2);
如果要结果集尽可能的多可以用SPH_MATCH_ANY
推荐使用SPH_MATCH_EXTENDED2,因为他比较灵活,比如我有name content两个字段,如果我只要搜索name中带有'godeye.org'的结果集,只能用这种搜索模式
然后再Query的时候写入对应字段,举例:
$res = $sc->Query('@name godeye.org', 'Godeye');//其中第二个参数是索引名,如果写成'*'或者不写,会搜索sphinx中所有的索引


试着做做下面的题目吧

    1:如何检查sphinx索引是否创建正确
    2:使用sphinx的PHP API如果给结果集分页
    3:sphinx查询模式说法错误的是
打赏  如对你有帮助,请我喝杯咖啡吧!