mysql sphfiks_使用sphinx

SQL   结构化查询语言(是一种标准,所有的关系型数据库Mysql,sqlserver,oracle)

sphinx的使用两种方式:

第一种:  使用sphinx的API来操作sphinx   (常用)

sphinx可以使用API类,也可以将api编译到PHP中做为扩展

第二种:  使用mysql的sphinx的存储引擎

sphinx  这是英文的全文检索引擎

coreseek  这是支持中文词库的全文检索引擎

区别:

英文的文章 怎么能区分哪个词    以空格来区分词的

中文的文章 我爱北京天安门      中文词库

使用sphinx的步骤:

1、安装

cd E:/usr/local/coreseek-3.2.14-win32

2、配置(配置文件 csft_mysql.conf)

配置文件格式

1、数据源定义 (指向你数据的来源 ,通常是mysql)

2、索引 (索引的一些配置信息)

3、indexer  (内用的内存---基本不需要设置)

4、searchd  (服务器的一些配置---)

注意:

1、一个配置文件可以配置多个数据源和索引 ((1,2),(1,2),nnnn)

2、sql_query  主查询(把数据库表中的哪些字段查询出来--根据你页面的搜索条件)

select 第一个字段(一定是主键)

cd month9/date0410/vendor/yiisoft/yii2/sphinx

3、indexer.exe -c 配置文件 --all(参数--all 表示创建全部索引)

.\bin\indexer.exe -c .\etc\csft_mysql.conf --all

4、启动searchd 服务  searchd.exe -c 配置文件

.\bin\searchd.exe -c .\etc\csft_mysql.conf

5、php 操作sphinx

.\bin\indexer.exe -c .\etc\csft_mysql.conf --all

.\bin\searchd.exe -c .\etc\csft_mysql.conf

.\bin\indexer.exe -c .\etc\csft_mysql.conf delta

//多表索引

http://0x0d.im/archives/using-coreseek-with-PHP-with-multiple-indexes.html

//高亮显示

foreach($countries as $k=>$v){

$countries[$k]['name']=$cl->BuildExcerpts([$v['name']],'mysql','zhangsan',array('before_match'=>"",'after_match'=>""))[0];

}

//name//键值

//mysql//索引名称

//zhangsan//搜索的高亮名称

http://www.coreseek.cn/docs/coreseek_3.2-sphinx_0.9.9.html#matching-modes

$name=Yii::$app->request->get('name');

$starttime=Yii::$app->request->get('starttime');

$endtime=Yii::$app->request->get('endtime');

//实例化sphnix

$cl=new SphinxClient();

$cl->SetServer('127.0.0.1',9312);

//设置时间

$cl->SetConnectTimeOut(3);

$cl->SetArrayResult(true);

if(empty($name))

{

$cl->SetMatchMode(SPH_MATCH_FULLSCAN);

}else{

$cl->SetMatchMode(SPH_MATCH_ANY);

}

if($starttime && $endtime)

{

$cl->SetFilterRange('time',$starttime,$endtime);

}

//执行搜索

$arr=$cl->Query($name,'*');

// print_r($arr);die;

if($arr['matches']){

foreach($arr['matches'] as $k=>$v) {

$data[]=$v['id'];

}

}

$query = Users::find()->where(['id'=>$data]);

$countQuery = clone $query;

$pages = new Pagination([

'totalCount' => $countQuery->count(),

'defaultPageSize' => 4,]);

$models = $query->offset($pages->offset)

->limit($pages->limit)

->all();

return $this->render('sou', [

'models' => $models,

'pages' => $pages,

'name'=>$name,

'starttime'=>$starttime,

'endtime'=>$endtime

]);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值