Yii2 sphinx搜索 多条件选择搜索
案例要求
安装spinx
首先,你需要安装spinx,具体安装可以百度一份如何安装,网上有很多。
配置spinx
那么,安装完成后,打开sphinx(即你所建的sphinx安装目录),
找到这个文件,sphinx/etc/csft_mysql.conf文件,
在编译器中,打开这个文件,修改sphinx的源文件,配置
建立索引
改完配置后,停止sphinx服务,打开cmd,进入到你安装的sphinx安装目录中
开始建立索引:
索引建立成功,开启sphinx服务
在使用sphinx之前,你需要把sphinx/api/sphinxapi.php文件,复制一份,放到yii2的web中,
与你的入口文件保持同级,方便调用。
创建控制器
<?phpnamespace frontend\controllers;use Yii;
use app\models\Position;
//use yii\data\Pagination;//分页类use yii\db\Query;//搜索类class IndexController extends \yii\web\Controller
{//下拉选项字段 搜索值public function actionSearch_val(){$set = Yii::$app->request->get('set','');//接收搜索类型$key = Yii::$app->request->get('key','');//接收值require ( "sphinxapi.php" );//引入类if(yii::$app->request->isAjax){//echo $key.$set;die;$cl = new SphinxClient ();$cl->SetServer ( '127.0.0.1', 9312); $cl->SetConnectTimeout ( 3 );$cl->SetArrayResult ( true );if(empty($key)){$cl->SetMatchMode ( SPH_MATCH_FULLSCAN );}else{$cl->SetMatchMode ( SPH_MATCH_EXTENDED2 );if($set == 1){$key = $key; }else if($set == 2){$key = '@post_tempt ' .$key;}else if($set == 3){$key = '@ask_for ' .$key; } }$res = $cl->Query ( $key, "mysql" );if($res['total_found'] > 0){$ids = [];foreach ( $res['matches'] as $key => $row ) {$ids[] = $row['id'];}$query = new Query();$list = $query->select('j_id, post_tempt, ask_for')->from('job')->where(['in', 'j_id', $ids])->all();//print_r($list);} else {$list = [];} Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;return ['list' => $list ];}return $this->render('search2');}
创建视图
然后,在Views对应控制器的文件夹下,创建一个文件,search2.php
<?phpuse yii\bootstrap\ActiveForm;
use yii\helpers\Html;
use yii\helpers\Url;?>
<form action="" method="get"><input type="hidden" name="_csrf" value="dkZkUVdiTl8lDxQCZip9Ky4eLx4mViIWQXALAQMMOR4BEQMOZVZ8aA=="><div class="col-md-1"><select id="set"><option value="1">全部</option><option value="2">标题</option><option value="3">内容</option></select></div><div class="col-md-3"><input type="text" class="form-control" placeholder="keyword" id="key"></div><button type="button" class="btn btn-default">Search</button>
</form><p><div id="content"></div> <?php $this->beginBlock('index') ?>$(function(){$('.btn-default').click(function(){var set = $('#set').val();var key = $('#key').val();var url = '<?php echo Url::toRoute(['index/search_val'])?>';$.getJSON(url, {'key':key, 'set':set}, function(data){//alert(data);console.log(data);var lists= data.list;//console.log(data.length)var html = '<table class="table">';//这里用的是拼接for(var i = 0; i < lists.length; i++ ) {html += '<tr>';html += '<td>'+lists[i].j_id+'</td>';html += '<td>'+lists[i].post_tempt+'</td>';html += '<td>'+lists[i].ask_for+'</td>';html += '</tr>';} html += '</table>';$('#content').html(html);});});
});
<?php $this->endBlock('index') ?>
<?php $this->registerJs($this->blocks['index'], \yii\web\View::POS_END);?>
这样就完成了,试一下效果:
完成!
Yii2 sphinx搜索 多条件选择搜索相关推荐
- 找到二叉树中符合搜索二叉树条件的最大拓扑结构
找到二叉树中符合搜索二叉树条件的最大拓扑结构 给定一棵二叉树的头节点 head,已知所有节点的值都不一样,返回其中最大的.且符合搜索二叉树 条件的拓扑结构的节点数.这里的拓扑结构是指,你可以在二叉树中 ...
- 基于php的Sphinx以及coreseek的全文搜索,中文分词的使用(一)
基于php的Sphinx以及coreseek的全文搜索,中文分词的使用(一) ##1.sphinx简介 1.什么是sphinx Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检 ...
- 比百度还好用的搜索功能,支持「多条件」搜索哟
在「发布搜素」时,超级表格新增了「多条件」搜索.改变了旧版只能单条件的搜索情况.本次搜索可以分为三个维度进行设置. ①允许模糊搜索 ②多行展示 ③必填 允许模糊搜素 不勾选则默认为「精确搜索」 搜 ...
- 白话Elasticsearch03- 结构化搜索之基于bool组合多个filter条件来搜索数据
文章目录 概述 数据 小示例 搜索发帖日期为2017-01-01,或者帖子ID为XHDK-A-1293-#fJ3的帖子,同时要求帖子的发帖日期绝对不为2017-01-02 搜索帖子ID为XHDK-A- ...
- 如何使用Marketing Cloud的扩展字段作为搜索条件进行搜索
需求:我在Marketing Cloud的contact模型上用custom field这个应用创建了一个Extension field,名称为微信ID. 现在客户的需求是使用这个字段作为过滤条件进行 ...
- ed2k 网络中搜索资源并选择资源下载的分析及eMule源码梳理
上一篇博客中,客户端已连接到ed2k网络及客户端与服务器交互的eMule源码梳理,这里将开始搜索资源并下载及客户端与客户端交互的eMule源码梳理 emule 源码下载地址 http://downl ...
- 初学搜索之关键字选择
初学搜索之关键字选择 --------序言------------ 搜索引擎影响我们的生活已经许多年,它在我们需要下载某些资源.查看新闻.找到特定网站等时能够帮助我们及时快速地找到相关网页.但是如果仅 ...
- 简单粗暴理解与实现机器学习之K-近邻算法(十):交叉验证,网格搜索(模型选择与调优)API、鸢尾花案例增加K值调优
K-近邻算法 文章目录 K-近邻算法 学习目标 1.10 交叉验证,网格搜索 1 什么是交叉验证(cross validation) 1.1 分析 1.2 为什么需要交叉验证 **问题:那么这个只是对 ...
- 机器学习算法------1.10 交叉验证,网格搜索(交叉验证,网格搜索(模型选择与调优)API、鸢尾花案例增加K值调优)
文章目录 1.10 交叉验证,网格搜索 学习目标 1 什么是交叉验证(cross validation) 1.1 分析 1.2 为什么需要交叉验证 2 什么是网格搜索(Grid Search) 3 交 ...
最新文章
- mytag.class.php,dedetag.class.php文件分析
- mysql send-q_MYSQL---初识
- 【 Notes 】Positioning system classification
- 计算机专业考研英语二国家线,历年考研英语国家线汇总(2009-2020)
- nodejs全局安装和本地安装的区别
- DataColor的SnowLeopard支持
- python settings模块导入不了_无法导入设置“myproject.settings”(是否在sys.path上?):没有名为pinax的模块...
- 萧功秦:为什么我们缺少特立独行的人生态度
- apimodel 可以重复吗_Web API是否需要有ViewModels层类?
- RIP路由协议基本配置
- DeepStream插件Gstreamer(一):概述
- Linux宝库名人轶事栏目 | 我与中国开源软件二十年(一)
- 台式计算机提示内存不足怎么办,台式电脑提示内存不足怎么回事
- 记一次自己亲身经历灵异事件
- SQL语句中查找字符的位置
- Visualizing Search Results with Solr /browse Velocity
- html后代选择器的语法,后代选择器 | Descendant selectors
- 医疗空气净化器控制系统硬件设计
- 小福利,用selenium模块爬取qq音乐歌单!
- 安卓应用软件开发必学的基础内容