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


打造研发周边的好软件
致力于分享效率工具、有趣好玩的开源项目、技术干货。关注我,带你发现新大陆~

致力于分享效率工具、有趣好玩的开源项目、技术干货。关注我,带你发现新大陆~

706 声望
29 粉丝
0 条评论
推荐阅读
高颜值、多平台、功能强大的redis客户端
对于后端开发而言,日常工作中会经常接触到Redis。然而,经常使用命令行操作redis,效率相对于低下。一款好的redis客户端,能够帮助你快速的分析业务问题。

萧逸阅读 952

封面图
怎样用 PHP 来实现枚举?
在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。枚举是一个被命名的整型常数的集合,枚举在日常生活中很常见,...

唯一丶25阅读 6.3k评论 4

PHP转Go实践:xjson解析神器「开源工具集」
我和劲仔都是PHP转Go,身边越来越多做PHP的朋友也逐渐在用Go进行重构,重构过程中,会发现php的json解析操作(系列化与反序列化)是真的香,弱类型语言的各种隐式类型转换,很大程度的减低了程序的复杂度。

王中阳Go9阅读 1.6k评论 2

封面图
图片防盗链破解 解决图片防盗链问题 反向代理
当客户端(浏览器)向服务器请求内容的时候,会提交一个header,这个header中包含了如:浏览器信息、cookie等内容,那么有一个叫referer的东东,也包含在这里面。

TANKING7阅读 11.3k评论 5

Git操作不规范,战友提刀来相见!
年终奖都没了,还要扣我绩效,门都没有,哈哈。这波骚Git操作我也是第一次用,担心闪了腰,所以不仅做了备份,也做了笔记,分享给大家。问题描述小A和我在同时开发一个功能模块,他在优化之前的代码逻辑,我在开...

王中阳Go5阅读 2.1k评论 2

封面图
微信公众号开发:自动回复文本/图片/图文消息/关键词回复/上传素材/自定义菜单
对接流程1、申请微信公众号测试账号URL:[链接]2、登录,配置开发者服务器URL和Token开发者服务器配置代码:config.php {代码...} URL是config.php在你服务器的URLToken是上面代码自己设置的Token搞定之后,就能完...

TANKING2阅读 10.1k

Ajax实现搜索联想 搜索关键词提醒 无刷新搜索
通过javascript监听搜索框的内容,调用后端即可。(1)javascript监听搜索框的内容(2)把搜索框的关键词传给后端进行搜索(3)搜索到结果,遍历到页面

TANKING1阅读 4.4k

致力于分享效率工具、有趣好玩的开源项目、技术干货。关注我,带你发现新大陆~

706 声望
29 粉丝
宣传栏