案例要求

安装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搜索 多条件选择搜索相关推荐

  1. 找到二叉树中符合搜索二叉树条件的最大拓扑结构

    找到二叉树中符合搜索二叉树条件的最大拓扑结构 给定一棵二叉树的头节点 head,已知所有节点的值都不一样,返回其中最大的.且符合搜索二叉树 条件的拓扑结构的节点数.这里的拓扑结构是指,你可以在二叉树中 ...

  2. 基于php的Sphinx以及coreseek的全文搜索,中文分词的使用(一)

    基于php的Sphinx以及coreseek的全文搜索,中文分词的使用(一) ##1.sphinx简介 1.什么是sphinx Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检 ...

  3. 比百度还好用的搜索功能,支持「多条件」搜索哟

    在「发布搜素」时,超级表格新增了「多条件」搜索.改变了旧版只能单条件的搜索情况.本次搜索可以分为三个维度进行设置. ①允许模糊搜索  ②多行展示  ③必填 允许模糊搜素 不勾选则默认为「精确搜索」 搜 ...

  4. 白话Elasticsearch03- 结构化搜索之基于bool组合多个filter条件来搜索数据

    文章目录 概述 数据 小示例 搜索发帖日期为2017-01-01,或者帖子ID为XHDK-A-1293-#fJ3的帖子,同时要求帖子的发帖日期绝对不为2017-01-02 搜索帖子ID为XHDK-A- ...

  5. 如何使用Marketing Cloud的扩展字段作为搜索条件进行搜索

    需求:我在Marketing Cloud的contact模型上用custom field这个应用创建了一个Extension field,名称为微信ID. 现在客户的需求是使用这个字段作为过滤条件进行 ...

  6. ed2k 网络中搜索资源并选择资源下载的分析及eMule源码梳理

    上一篇博客中,客户端已连接到ed2k网络及客户端与服务器交互的eMule源码梳理,这里将开始搜索资源并下载及客户端与客户端交互的eMule源码梳理 emule 源码下载地址  http://downl ...

  7. 初学搜索之关键字选择

    初学搜索之关键字选择 --------序言------------ 搜索引擎影响我们的生活已经许多年,它在我们需要下载某些资源.查看新闻.找到特定网站等时能够帮助我们及时快速地找到相关网页.但是如果仅 ...

  8. 简单粗暴理解与实现机器学习之K-近邻算法(十):交叉验证,网格搜索(模型选择与调优)API、鸢尾花案例增加K值调优

    K-近邻算法 文章目录 K-近邻算法 学习目标 1.10 交叉验证,网格搜索 1 什么是交叉验证(cross validation) 1.1 分析 1.2 为什么需要交叉验证 **问题:那么这个只是对 ...

  9. 机器学习算法------1.10 交叉验证,网格搜索(交叉验证,网格搜索(模型选择与调优)API、鸢尾花案例增加K值调优)

    文章目录 1.10 交叉验证,网格搜索 学习目标 1 什么是交叉验证(cross validation) 1.1 分析 1.2 为什么需要交叉验证 2 什么是网格搜索(Grid Search) 3 交 ...

最新文章

  1. mytag.class.php,dedetag.class.php文件分析
  2. mysql send-q_MYSQL---初识
  3. 【 Notes 】Positioning system classification
  4. 计算机专业考研英语二国家线,历年考研英语国家线汇总(2009-2020)
  5. nodejs全局安装和本地安装的区别
  6. DataColor的SnowLeopard支持
  7. python settings模块导入不了_无法导入设置“myproject.settings”(是否在sys.path上?):没有名为pinax的模块...
  8. 萧功秦:为什么我们缺少特立独行的人生态度
  9. apimodel 可以重复吗_Web API是否需要有ViewModels层类?
  10. RIP路由协议基本配置
  11. DeepStream插件Gstreamer(一):概述
  12. Linux宝库名人轶事栏目 | 我与中国开源软件二十年(一)
  13. 台式计算机提示内存不足怎么办,台式电脑提示内存不足怎么回事
  14. 记一次自己亲身经历灵异事件
  15. SQL语句中查找字符的位置
  16. Visualizing Search Results with Solr /browse Velocity
  17. html后代选择器的语法,后代选择器 | Descendant selectors
  18. 医疗空气净化器控制系统硬件设计
  19. 小福利,用selenium模块爬取qq音乐歌单!
  20. 安卓应用软件开发必学的基础内容

热门文章

  1. Java 中 Gson的使用
  2. 查看win8序列号的方法图文教程【系统天地】
  3. 微信小程序-获取用户手机号码
  4. 【Python】详解 bisect 模块
  5. 2021年全球与中国汽油泵行业市场规模及发展前景分析
  6. 服务网关Getway
  7. Aurora HDR 2019 for Mac 1.0.1高级 HDR 软件。
  8. 优酷视频转码MP4格式
  9. 分享30个独特的 404 错误页面设计模板 - 梦想天空(山边小溪)
  10. C++ Map find函数和count函数