使用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'=>"<font style='font-weight:bold;color:#f00;'>",'after_match'=>"</font>"))[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
]);
使用sphinx的更多相关文章
- 利用sphinx为python项目生成API文档
sphinx可以根据python的注释生成可以查找的api文档,简单记录了下步骤 1:安装 pip install -U Sphinx 2:在需要生成文档的.py文件目录下执行sphinx-apido ...
- 安装PHP sphinx扩展 sphinx-1.1.0/sphinx.c:105:2: error: too few arguments 错误
表现: /home/sphinx-1.1.0/sphinx.c: In function 'php_sphinx_client_read_property':/home/sphinx-1.1.0/sp ...
- 【整理】Linux下中文检索引擎coreseek4安装,以及PHP使用sphinx的三种方式(sphinxapi,sphinx的php扩展,SphinxSe作为mysql存储引擎)
一,软件准备 coreseek4.1 (包含coreseek测试版和mmseg最新版本,以及测试数据包[内置中文分词与搜索.单字切分.mysql数据源.python数据源.RT实时索引等测 ...
- coreseek+sphinx+mysql+thinkphp整合
1.安装coreseek 1.1首先升级或安装系统依赖库 yum install make gcc g++ automake libtool mysql-client libmysqlclient15 ...
- 全文检索解决方案(lucene工具类以及sphinx相关资料)
介绍两种全文检索的技术. 1. lucene+ 中文分词(IK) 关于lucene的原理,在这里可以得到很好的学习. http://www.blogjava.net/zhyiwww/archive/ ...
- 如何将Sphinx生成的html文档集成进入Django
参考 http://stackoverflow.com/questions/10594618/django-and-sphinx-how-to-view-the-html-sphinx-generat ...
- Linux下搭建coreseek(sphinx+mmseg3)全文检索
测试平台:Center OS 1.设置环境,升级/安装系统基础依赖包:m4.autoconf.automake.libtool #设置路径和中文环境: $ export PATH=/usr/local ...
- debian下使用Sphinx异常“Could not import extension sphinx.builders.linkcheck (exception: cannot import name SSLError)”的解决
最近使用到Sphinx编译文档,出现如下异常: Extension error:Could not import extension sphinx.builders.linkcheck (except ...
- [搜索引擎]Sphinx的介绍和原理探索
What/Sphinx是什么 定义 Sphinx是一个全文检索引擎. 特性 索引和性能优异 易于集成SQL和XML数据源,并可使用SphinxAPI.SphinxQL或者SphinxSE搜索接口 易于 ...
- Sphinx安装配置应用
Sphinx 是由俄罗斯人Andrew Aksyonoff开发的一个全文搜索引擎.意图为其他应用提供高速.地空间占用.高结果相关度的全文搜索功能.Sphinx可以非常容易的与SQL数据库和脚本语言集成 ...
随机推荐
- 基于dubbo2.5.5+zookeeper3.4.9的服务搭建
参考资料:https://segmentfault.com/a/1190000009568509https://segmentfault.com/a/1190000004654903 0. 环境 Ja ...
- 【WIP】rails redis的使用
创建: 2018/03/17 [任务表]TODO 注: mac版 %开头表示命令行命令 安装 安装 % brew install redis 确认版本 % redis-server --ver ...
- bzoj 1863: [Zjoi2006]trouble 皇帝的烦恼【二分+dp】
二分答案,注意l是max(a[i]+a[i+1]),r是sum_a 判断的时候用dp,设f[i]为i与1最少的相同颜色数,g[i]为i与1最多的相同颜色数,转移是f[i]=max(a[i]-(w-a[ ...
- UVA1437 String painter
传送门 我们先考虑从一个空白串变成\(B\),这样的话用区间dp,区间dp,设\(f[l][r]\)表示区间\((l,r)\)的最小次数,当\(l==r\)时为\(1\),当\(s[l]==s[r]\ ...
- 《Windows核心编程系列》八谈谈用内核对象进行线程同步
使用内核对象进行线程同步. 前面我们介绍了用户模式下线程同步的几种方式.在用户模式下进行线程同步的最大好处就是速度非常快.因此当需要使用线程同步时用户模式下的线程同步是首选. 但是用户模式下的线程同步 ...
- treap板子(洛谷 P3369 【模板】普通平衡树(Treap/SBT))
由于有相同的数,每个节点加一个权值表示此数出现的次数 #include<cstdio> #include<cstdlib> #include<ctime> #inc ...
- 分享一款强大的图片查看器插件,手机PC 通吃,功能超级齐全!
一款强大的图片查看器插件,手机PC 通吃,功能超级齐全! 地址:http://photoswipe.com/
- String的用法——判断功能
package cn.itcast_03; /* String的判断功能: 1.boolean equals(Object obj):字符串的内容是否相同,区分大小写 2.boolean equals ...
- hihocoder offer收割编程练习赛11 B 物品价值
思路: 状态压缩 + dp. 实现: #include <iostream> #include <cstdio> #include <cstring> #inclu ...
- vue2.0生命周期函数
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...