php sphinx 查询,sphinx的使用2-使用PHP查询数据并把查询的关键字加亮

第一步首先要开启sphinx服务器

searchd -c 配置文件 索引名称

服务器端默认监听9321端口。常用命令:

-c:指定配置文件路径

--stop:停止当前服务

--status:查看当前状态

--install:安装为windows服务

--delete:删除windows服务

--port port:监听的端口

--index indexName:只查询某个索引,默认查询所有索引

把sphinx安装成系统服务

5baa851b7eb46b7771f57e4e4788aade.png

开始进入正题

使用PHP先把查询的关键词发给sphinx服务器进行查询,sphinx会返回查询到的记录在mysql中记录的ID

a.创建一个PHP文件

b.复制PHP的API文件到网站目录下:

2098263f3a9e0410780262c880814b3e.png

操作sphinx的php文件 如果查询的内容有中文,那么应该讲文件编码设置为UTF-8编码

如果没有设置,可能结果中不会出现matches元素 total则会统计出匹配的结果为空(0)

PHP操作sphinx代码:

header("Content-type:text/html;charset=utf-8");

require('sphinxapi.php');

$sp = new SphinxClient();

//设置服务器

$sp -> setServer('localhost',9312);

$sp -> setArrayResult(true);

//查询出的数据一共0-99 一共100条数据

$sp -> setLimits(0,100);

//查询shpinx

//参数1:查询的单词

//参数2: 查询的索引文件名字 如果不填写,说明是从所有的索引中查询

$res = $sp->query('唐吉可德','mymovie');

$id=array();

foreach(($res['matches']) as $key =>$v){

$id[]=$v['id'];

}

$id_string=implode(',',$id);

$link=mysql_connect('localhost','root',123456);

if(!$link){

die("失败!");

}

mysql_select_db('dedecms831');

mysql_set_charset('utf8');

//echo $id_string;

//die();

$sql = "SELECT a.id,b.juqing,a.title FROM `dede_archives` a LEFT JOIN `dede_addon7` b  ON a.id=b.aid where a.id IN(".$id_string.")";

$data = array();

$res=mysql_query($sql);

while($row=mysql_fetch_assoc($res)){

$data[]=$row;

}

echo "

";

var_dump($data);

常用API有下面几种:

buildExcerpts:创建文档摘要

close:关闭连接

query:执行查询

getLastError:返回上一条错误信息

open:建立到服务器端的持久连接

setArrayResult:设置返回结果格式

setLimits:设置返回结果数量与偏移

setMatchModel:设置查询模式

updateAttributes:更新文档属性

setGroupBy  设置分组属性

setFileter 设置过滤器

更多的API可以查看http://www.php.net/manual/zh/book.sphinx.php

Sphinx的匹配模式

SPH_MATCH_ALL  匹配所有查询词(默认)

SPH_MATCH_ANY  匹配查询词中的任意一个

SPH_MATCH_PHRASE 将整个查询词看做一个词组,要完全匹配

SPH_MATCH_BOOLEAN 将查询看做一个布尔表达式

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

PHP中通过setMatchMode函数来设置,如:

$sc = new SphinxClient();

$sc->setMatchMode(SPH_MATCH_ANY);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值