php的sphinx使用,Yii2.0PHP使用Sphinx

5268f80b9b1e01f982625ef6fac83ca1.png

这篇文章介绍的内容是关于Yii2.0 PHP使用Sphinx ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

[php] view plain copy

1.首先在Yii2.0中要引入sphinxapi类文件,引入的步骤:

(1)在根目录中新建文件夹 libs,将类文件sphinxapi.php 放入 libs 文件夹中。

(2.)然后在根目录的 config 文件夹中的 web.php 配置,添加上Yii::$classMap['SphinxClient'] ='@app/libs/sphinxapi.php';

(3.)在控制器中 使用 useSphinxClient;

(4.)我在这里使用了两个表、博文表 ex_blog、博文分类表 ex_blog_type

[php] view plain copy

/*

* Sphinx搜索

*/

public function actionSearch(){

//判断是否是POST提交

if(\Yii::$app->request->isPost){

$title = \Yii::$app->request->post('title');

//$author = \Yii::$app->request->post('author');

//$type_name = \Yii::$app->request->post('type_name');

$sphinx = new SphinxClient();

$sphinx->SetServer('127.0.0.1',9312);

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

$sphinx->SetMatchMode ( SPH_MATCH_ALL);

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

$sphinx->SetMatchMode ( SPH_MATCH_ANY);

//将整个查询看作一个词组,要求按顺序完整匹配

$sphinx->SetMatchMode ( SPH_MATCH_PHRASE);

$data = $sphinx->Query("$title","*");

//判断键值是否存在

if(!array_key_exists("matches",$data)){

exit("没有检索到您需要的信息");

}

// 1.Matches中就是查询的结果了,但是仿佛不是我们想要的数据。

// 2.根据官方的说明是Sphinx并没有连接到MySQL去取数据,只是根据它自己的索引内容进行计算;

// 3.因此如果想用Sphinx提供的API去取得我们想要的数据,还必须以查询的结果为依据(也就是ID为依据);

// 4.根据ID再次查询MySQL从而得到我们想要的数据。

//获取主键 (这里的主键就是数据在数据库中的自增ID) 通过ID在根据数据库 查询出数据

$key = array_keys($data['matches']);

//把数组元素组合为一个字符串

$key = join(',',$key);

//根据获取到的ID在查询数据库

$query = new \yii\db\Query();

//使用框架中的in 哈希格式 来检索

$blogInfo = $query->from(['b'=>'ex_blog','bt'=>'ex_blog_type'])->where(['id'=>[$key]])->all();

//将数组转换为Json类型

echo json_encode($blogInfo);

}else{

echo "非正常提交";

}

}

html 页面的处理

[php] view plain copy

function search(){

//获取搜索的数据

var title = $("#title").val();

var author = $("#author").val();

var type_name = $("#type_name").val();

//发送AJAX请求

$.ajax({

url:"?r=sphinx/search",

data:{title:title,author:author,type_name:type_name},

type:"POST",

success:function(msg){

//alert(msg);

//将JSON数据转换为对象

obj = eval("("+msg+")");

var table = '';

table += '

table += '

';

table += '

编号';

table += '

标题';

table += '

作者';

table += '

类型';

table += '

封面';

table += '

添加时间';

table += '

操作';

table += '

';

for(var i in obj){

table += "

"

table += "

"+obj[i].id+"";

table += "

"+obj[i].title+"";

table += "

"+obj[i].author+"";

table += "

"+obj[i].type_name+"";

table += '

封面';

table += "

"+obj[i].time+"";

table += "

删除 | 编辑 ";

table += "

"

}

table += '

';

//将表格赋值到页面

$("#table").html(table);

//将原有的内容移除

//$(".content").remove();

//将返回的数据追加到原来位置

//$("#tr").after(tr);

}

});

}

显示数据用的p

[php] view plain copy

相关推荐:

Yii2 的控制台命令

php中如何使用sphinx搜索引擎

Yii框架中sphinx索引配置方法解析

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值