介绍php
sphinx自己是一个中文检索索引技术 mysql索引: 主键、惟1、普通、全文(match/agaisnt)
sphinx是俄罗斯人开发一款速度、效率很是高的索引技术sphinx是来替代mysql全文索引的
mysql自己的全文索引技术特性表现通常,通常数据库使用全文索引都不是使用自己的,都须要借助第3方索引技术支持,php->mysql->sphinx> , java->oracle->lucene 搜索引擎(百度/google等)要大量使用“检索技术”java2:sphinx使用的好处:① 快速检索用户须要的模糊信息(替代like使用) ②
自己还有中文“分词”的实现,英文分词经过”空格”区分,中文分词经过技术实现(例如”匹配”,使用习惯)mysql
sphinx是专业作数据检索的一个技术用户去sphinx作模糊查询,查找“北京”相关的信息,sphinx把“北京西二旗”所有信息的“主键id”值给用户返回以后,用户经过“许多-主键id”值去数据库 得到相关的记录信息,并返回信息。
查询多个主键id信息,使用了in查询算法
1:首先你须要下载sphinx功能包sql
具体是下载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.exeapi
命令:indexer.exe -c 配置文件路径 source名称
4:查看索引文件数组
4.1 使用sphinx速度对比oracle
安装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链接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去查询数据