yii内使用sphinx [ 2.0 版本 ]
首先声明小编用的sphinx是4.1版本的【win32可以通吃32和64】
先把解压完的sphinx文件放到一个固定的位置方便我们安装
【复制出来一个解压完的文件夹,不然 搜索的时候会搜不出来值、也不报错】
现在我们来配置一下sphinx解压后的文件coreseek-4.1-win32【去掉多余的后缀看着不爽】
在etc文件夹里面的csft_mysql.conf
#MySQL数据源配置,详情请查看:http://www.coreseek.cn/products-install/mysql/
#请先将var/test/documents.sql导入数据库,并配置好以下的MySQL用户密码数据库
#源定义
source mysql
{
#------------------------------------下面修改成你的数据库信息就可以了-------------------------------
type = mysql
sql_host = localhost
sql_user = root
sql_pass = root
sql_db = month9
sql_port = 3306
sql_query_pre = SET NAMES utf8
#------------------------------------修改下面这行代码将tables换成你的表名-------------------------------
sql_query = SELECT * FROM tables
#sql_query第一列id需为整数
#title、content作为字符串/文本字段,被全文索引
#------------------------------------下面两行直接注释掉就可以了-----------------------------------------
#sql_attr_uint = group_id #从SQL读取到的值必须为整数
#sql_attr_timestamp = date_added #从SQL读取到的值必须为整数,作为时间属性
sql_query_info_pre = SET NAMES utf8 #命令行查询时,设置正确的字符集
sql_query_info = SELECT * FROM rk_s WHERE id=$id #命令行查询时,从数据库读取原始数据信息
}
#index定义
index mysql
{
source = mysql #对应的source名称
path = var/data/mysql #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
docinfo = extern
mlock = 0
morphology = none
min_word_len = 1
html_strip = 0
#中文分词配置,详情请查看:http://www.coreseek.cn/products-install/coreseek_mmseg/
#charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾
charset_dictpath = etc/ #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...
charset_type = zh_cn.utf-8
}
#全局index定义
indexer
{
mem_limit = 128M
}
#searchd服务定义
searchd
{
listen = 9312
read_timeout = 5
max_children = 30
max_matches = 1000
seamless_rotate = 0
preopen_indexes = 0
unlink_old = 1
pid_file = var/log/searchd_mysql.pid #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
log = var/log/searchd_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
query_log = var/log/query_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
binlog_path = #关闭binlog日志
}
现在我们来写一个文本文档方便日后启动
E:
cd coreseek
#进入解压完的sphinx文件
.\bin\indexer.exe -c .\etc\csft_mysql.conf --all
#在安装的过程中没有看见error就算安装成功
.\bin\searchd.exe -c .\etc\csft_mysql.conf
【确认命令行可以安装成功把文本文档后后缀改成cmd双击就可以启动】
现在开始在进攻Yii
把fixtures文件夹重命名为sphinx【文件夹路径:coreseek\api\ruby\spec\fixtures】
放到yii框架里面的vendor里面【直接放重命名之后的文件夹就可以了】
在上面写一个声明use SphinxClient;
下面是小编sphinx搜索的方法
public function actionSel(){
//小编接的值
$sou=Yii::$app->request->get('id');
//echo $sou;
$cl = new SphinxClient();
$cl -> SetServer('127.0.0.1',9312);
$cl -> SetConnectTimeout(3);
$cl -> SetArrayResult(true);
$cl -> SetMatchMode(SPH_MATCH_ANY);
$res = $cl->Query($sou,"*");
//print_r($res);die;
$arr = $res['matches'];
//print_r($arr);die;
foreach ($arr as $key => $value) {
$str[]=$value['id'];
}
$a=implode(',', $str);
//print_r($a);
$sql="select * from ceshi where id in ($a)";
$arr=Yii::$app->db->createCommand($sql)->queryAll();
foreach($arr as $key=>$v){
$arr[$key]=str_replace($sou,"<font color='red'>{$sou}</font>",$v);
}
return $this->render('list',['arr'=>$arr]);
}
如果搜索的时候会搜不出来值、也不报错
就把之前备份的文件夹【文件夹路径:coreseek\api\ruby\spec\fixtures】
里面的sphinxapi.php里面的内容替换到框架里面的sphinxapi.php【文件夹路径:demo\vendor\sphinx\sphinxapi.php】
如果还报错就留言联系小编 小编会尽快回复(☆▽☆)(☆▽☆)(☆▽☆)
熊本污 天下熊熊一般污
注册时间:2016-05-03
最后登录:2016-09-21
在线时长:6小时36分
最后登录:2016-09-21
在线时长:6小时36分
- 粉丝8
- 金钱615
- 威望140
- 积分2075
共 3 条评论
请问,这种用法,和使用插件yii2-sphinx哪个好些?
内置,这是一种普遍的使用方法适用于很多框架【文件的路径不同】
原版sphinx早已支持中文
这个怎么结合gridview 做搜索列表页呢