一.sphinx介绍与好处
介绍
sphinx本身是一个中文检索索引技术 mysql索引: 主键、唯一、普通、全文(match/agaisnt)
sphinx是俄罗斯人开发一款速度、效率非常高的索引技术sphinx是来替代mysql全文索引的
mysql本身的全文索引技术特性表现一般,一般数据库使用全文索引都不是使用本身的,都需要借助第3方索引技术支持,php->mysql->sphinx> , java->oracle->lucene 搜索引擎(百度/google等)要大量使用“检索技术”2:sphinx使用的好处:
① 快速检索用户需要的模糊信息(替代like使用) ②
本身还有中文“分词”的实现,英文分词通过”空格”区分,中文分词通过技术实现(例如”匹配”,使用习惯)
二.怎么使用sphinx呢??
sphinx是专业做数据检索的一个技术用户去sphinx做模糊查询,查找“北京”相关的信息,sphinx把“北京西二旗”全部信息的“主键id”值给用户返回之后,用户通过“许多-主键id”值去数据库 获得相关的记录信息,并返回信息。
查询多个主键id信息,使用了in查询
1:首先你需要下载sphinx功能包
具体是下载coreseek:中文+sphinx解压压缩文件到软件的运行目录即可,路径不能有中文和空格
下载地址:http://www.coreseek.cn/news/7/52/]
2: 为数据库数据创建索引文件导入操作的数据表数据(5万条记录)
// 注意:如果之前没有选择数据库,那么使用use选择数据库使用管理员权限的cmd
mysql > use forum ;
mysql> source d:/forum.sql #确保数据导入成功 不然没法建立索引
3: 做索引配置, 注意用编辑器打开,不要使用记事本sphinx.conf创建索引的执行程序文件软件目录/bin/indexer.exe
命令:indexer.exe -c 配置文件路径 source名称
4:查看索引文件
4.1 使用sphinx速度对比
安装sphinx服务使用管理员cmd执行以下命令
searchd.exe --install -c 配置文件路径 参数顺序一定要不能颠倒。
4.2:查看并启动sphinx查询服务
searchd --install -c C:\wamp64\bin\coreseek-3.2.14-win32\sphinx.conf
如果安装服务之后,不能够正常启动服务,可能就是安装的时候,参数顺序不对。卸载重装
searchd.exe --delete删除服务
第三步:php出场了 如何使用php搞定sphinx呢??so easy
php连接sphinx,需要引入api文件,进行内容模糊检索查询:
原理:php传入关键字给sphinx,sphinx根据自身算法找到数据的主键id,mysql根据id去查询数据 前提是主键必须存在哦!
代码示例:
/**
* 连接sphinx服务 进行查询
* @param $key 搜索的关键字
* @return bool|mixed
*/
public function linkSphinx($key)
{
//实列化
$cl = new \SphinxClient ();
$cl->SetServer('127.0.0.1', 9312); //连接sphinx服务
$cl->SetConnectTimeout(3); //超时时间
$cl->SetArrayResult(true); //以数组形式返回获得的结果
$cl->SetMatchMode(SPH_MATCH_ANY); //分词,收集分词任何部分检索的结果
$cl->setLimits(0, 12); //限制获取记录条数
//(前12个记录信息)
//索引源名称
$index_name = "dizhi";
//$res = $cl->Query ( '被检索的关键字', "索引名称" );
$res = $cl->Query($key, $index_name);
return $res;
}
① 通过两个字段查找
② 有分词查找体现
获取到maths的下标 取到id 根据主键id去查询数据
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。