Heim > Artikel > Backend-Entwicklung > Yii2.0 PHP verwendet Sphinx
Dieser Artikel stellt die Verwendung von Sphinx in Yii2.0 PHP vor. Er hat einen gewissen Referenzwert. Jetzt kann ich ihn mit allen teilen.
[php]Klartext anzeigen
1 .Führen Sie zunächst die Sphinxapi-Klassendatei in Yii2.0 ein. Die Schritte zur Einführung sind:
(1) Erstellen Sie einen neuen Ordner libs in Legen Sie im Stammverzeichnis die Klassendatei sphinxapi.php im libs-Ordner ab.
(2.) Fügen Sie dann in der web.php-Konfiguration im Konfigurationsordner des Stammverzeichnisses Yii::$classMap hinzu ['SphinxClient'] = '@app/libs/sphinxapi.php';
(3.) Verwendung im Controller use SphinxClient; (4.) Ich habe hier zwei Tabellen verwendet, die Blogtabelle ex_blog und die Blogkategorietabelle ex_blog_type
/* * 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 "非正常提交"; } }
显示数据用的p [php] view plain copy 相关推荐:<script>
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 border="1" align="center" width="800" style="text-align: center">'
table += '<tr id="tr">';
table += '<td>编号</td>';
table += '<td>标题</td>';
table += '<td>作者</td>';
table += '<td>类型</td>';
table += '<td>封面</td>';
table += '<td>添加时间</td>';
table += '<td>操作</td>';
table += '</tr>';
for(var i in obj){
table += "<tr class='content'>"
table += "<td>"+obj[i].id+"</td>";
table += "<td>"+obj[i].title+"</td>";
table += "<td>"+obj[i].author+"</td>";
table += "<td>"+obj[i].type_name+"</td>";
table += '<td><img src='+obj[i].pic+' alt="封面" width="50" height="50"></td>';
table += "<td>"+obj[i].time+"</td>";
table += "<td> <a href=''>删除</a> | <a href=''>编辑</a> </td>";
table += "</tr>"
}
table += '</table>';
//将表格赋值到页面
$("#table").html(table);
//将原有的内容移除
//$(".content").remove();
//将返回的数据追加到原来位置
//$("#tr").after(tr);
}
});
}
</script>
<p id="table"></p>
Das obige ist der detaillierte Inhalt vonYii2.0 PHP verwendet Sphinx. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!