sphinx 根据字段在字段内搜索
控制器
<?php
namespace appcontrollers;
use Yii;
use yiiwebController;
use appmodelsSphinx_much_search;
use SphinxClient;
class SearchController extends Controller
{
public $enableCsrfValidation = false;
public function actionLogin()
{
$db=new Sphinx_much_search;
$a=$db->find()->asArray()->all();
return $this->renderPartial("login");
}
public function actionSearch()
{
$field=yii::$app->request->post("field");
$zhi=yii::$app->request->post("zhi");
$sphinx= new SphinxClient();
$sphinx->SetServer("127.0.0.1",9312);
//将查询看作一个Sphinx内部查询语言的表达式
$sphinx->SetMatchMode ( SPH_MATCH_EXTENDED2 );
//@符号屏蔽错误 第一个参数中 $filed是字段名 $zhi是你要在这个字段中搜索的值 第二个参数是规则
$res=$sphinx->Query("@".$field." ".$zhi,"mysql");
// array_keys是获取数组中的键(获取到的是一个数组) 然后将数组转换成字符串
$id=implode(",",array_keys($res["matches"]));
$val=Sphinx_much_search::find()->where("id in ($id)")->asArray()->All();
//print_r($val);die;
foreach ($val as $k =>$v)
{
$val[$k]["title"]=str_replace($zhi,"<font color="red">$zhi</font>",$v["title"]);
$val[$k]["content"]=str_replace($zhi,"<font color="red">$zhi</font>",$v["content"]);
$val[$k]["country"]=str_replace($zhi,"<font color="red">$zhi</font>",$v["country"]);
}
echo json_encode($val);
}
}
?>view
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="js/jq.js"></script>
</head>
<body>
<table align="center">
<tr>
<td>搜索字段</td>
<td>
<select id="field">
<option value="*">全部字段</option>
<option value="title">标题</option>
<option value="content">内容</option>
<option value="country">国家</option>
</select>
</td>
<td><input type="text" id="zhi"></td>
<td><input type="submit" class="fun" value="搜索"></td>
</tr>
<tr id="lists">
<td>标题</td>
<td>内容</td>
<td>国家</td>
</tr>
<tr class="contents"></tr>
</table>
</body>
</html>
<script>
$(".fun").click(function(){
var field=$("#field").val();
var zhi=$("#zhi").val();
$.post("?r=search/search",{"field":field,"zhi":zhi},function(msg){
//alert(msg);
var data=eval("("+msg+")");
var tr="";
for(i in data)
{
tr+="<tr class="contents">";
tr+="<td>"+data[i].title+"</td>"
tr+="<td>"+data[i].content+"</td>"
tr+="<td>"+data[i].country+"</td>"
tr+="</tr>";
}
$(".contents").remove();
$("#lists").after(tr);
})
})
</script>声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: 用php获取设备信息
- 下一篇:没有了
