sphinx在php的用法,PHP下利用Sphinx进行查询分页操作

1、在配置coreseek也是sphinx中文分词之后,下载一个sphinxapi ,也可以直接将sphinx的模块直接编译到php中 , 不过了只方便直接使用sphinxapi ,.

传送门:http://pan.baidu.com/s/1gdKmh71

2、新建一个search.php文件 , 将sphinx.php跟其放同一目录中,代码如下

//首先连接数据库

$con

= @mysql_connect("localhost","root","123");

mysql_select_db("test");

mysql_query("SET NAMES UTF8");

//简单的获取分页数据

$search = ‘sphinx’;//假如查询sphinx这个关键词,可变动

$page = isset($_GET[‘page’]) ? (int) $_GET[‘page’] : 1;

$pagesize = 10;

$offset = ($page – 1) * $pagesize;

//连接sphinx

require "sphinxapi.php";

$sp = new SphinxClient;//New一个sphinx客户端

$sp -> SetServer("localhost",9312);

$sp->SetLimits($offset, $pagesize,1000);//1000是查询最大的条件是1000条

$data

= $sp-> query($search , “*”);//查询关键词

//查询的数据以数组的形式返回给$data

,下标matches, 是当前返回的查询结果集合,下标total是查询到的总数量,用于控制分页显示

//$data的数组如下Array ( [error] => [warning]

=> [status] => 0 [fields] => Array ( [0] => title [1] =>

description ) [attrs] => Array ( ) [matches] => Array ( [1] => Array (

[weight] => 2 [attrs] => Array ( ) ) [2] => Array ( [weight] => 2

[attrs] => Array ( ) ) ) [total] => 2 [total_found] => 2 [time] =>

0.014 [words] => Array ( [linux] => Array ( [docs] => 2 [hits] => 4

) ) )

//根据返回的数据查询数据库中的数据

if(isset($data[‘matches’])){

$inId

= implode(‘,’,array_keys($matches['matches']) );

$sql

= “SELECT * FROM post WHERE id IN ({$inId})”;

$qry = mysql_query($sql);

$fetchData = array();//读取的数据

while(!!$row = mysql_fetch_assoc($qry)){

$fetchData[] = $row;

}

}

//根据total的数据 , 重新进行分页显示

$totalPage

= ceil($total / $pagesize);

$page = $page > $totalPage ? $totalPage : $page;

//然后根据新的page输出一些可点击按钮如首页1尾页

?>

3、这样一个简单sphinx分页就好了,大家可以根据自己的框架 , 项目要求等进行修改,优化。大致的思路就是这样

版权声明:未经博主允许不得转载。http://smister.com/post-14.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值