sphinx中文索引实现中文检索

一.sphinx介绍与好处

  1. 介绍

sphinx本身是一个中文检索索引技术 mysql索引: 主键、唯一、普通、全文(match/agaisnt)
sphinx是俄罗斯人开发一款速度、效率非常高的索引技术sphinx是来替代mysql全文索引的
mysql本身的全文索引技术特性表现一般,一般数据库使用全文索引都不是使用本身的,都需要借助第3方索引技术支持,php->mysql->sphinx> , java->oracle->lucene 搜索引擎(百度/google等)要大量使用“检索技术”

 2:sphinx使用的好处:

① 快速检索用户需要的模糊信息(替代like使用) ②
本身还有中文“分词”的实现,英文分词通过”空格”区分,中文分词通过技术实现(例如”匹配”,使用习惯)

二.怎么使用sphinx呢??

clipboard.png

sphinx是专业做数据检索的一个技术用户去sphinx做模糊查询,查找“北京”相关的信息,sphinx把“北京西二旗”全部信息的“主键id”值给用户返回之后,用户通过“许多-主键id”值去数据库 获得相关的记录信息,并返回信息。
查询多个主键id信息,使用了in查询

1:首先你需要下载sphinx功能包

具体是下载coreseek:中文+sphinx解压压缩文件到软件的运行目录即可,路径不能有中文和空格                  

下载地址:http://www.coreseek.cn/news/7/52/]

clipboard.png

2: 为数据库数据创建索引文件导入操作的数据表数据(5万条记录)
// 注意:如果之前没有选择数据库,那么使用use选择数据库使用管理员权限的cmd

mysql > use forum ;
mysql> source d:/forum.sql #确保数据导入成功 不然没法建立索引

3: 做索引配置, 注意用编辑器打开,不要使用记事本sphinx.conf创建索引的执行程序文件软件目录/bin/indexer.exe

命令:indexer.exe -c 配置文件路径  source名称    

clipboard.png

clipboard.png

clipboard.png

4:查看索引文件

4.1 使用sphinx速度对比

安装sphinx服务使用管理员cmd执行以下命令
searchd.exe --install -c 配置文件路径 参数顺序一定要不能颠倒。

clipboard.png

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去查询数据

clipboard.png

阅读 10.3k

推荐阅读
php的学习之旅
用户专栏

记录平时php学习的笔记

11 人关注
13 篇文章
专栏主页