mysql sphinx 中文搜索_sphinx中文索引实现中文检索

本文介绍了Sphinx中文检索技术,作为MySQL全文索引的替代方案。Sphinx提供了快速的模糊信息检索和中文分词功能。文章详细讲解了如何下载并配置Sphinx,包括创建索引、启动服务,以及使用PHP连接Sphinx进行内容查询。通过设置索引源和调用SphinxAPI,可以实现高效的数据库查询。
摘要由CSDN通过智能技术生成

一.sphinx介绍与好处

介绍

sphinx本身是一个中文检索索引技术 mysql索引: 主键、唯一、普通、全文(match/agaisnt)

sphinx是俄罗斯人开发一款速度、效率非常高的索引技术sphinx是来替代mysql全文索引的

mysql本身的全文索引技术特性表现一般,一般数据库使用全文索引都不是使用本身的,都需要借助第3方索引技术支持,php->mysql->sphinx> , java->oracle->lucene 搜索引擎(百度/google等)要大量使用“检索技术”

2:sphinx使用的好处:

① 快速检索用户需要的模糊信息(替代like使用) ②

本身还有中文“分词”的实现,英文分词通过”空格”区分,中文分词通过技术实现(例如”匹配”,使用习惯)

二.怎么使用sphinx呢??

50bfb8c8a8ae6e8f1693401b315e5dce.png

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

查询多个主键id信息,使用了in查询

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

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

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

e69ba02beb239f329f06c731b7f94701.png

2: 为数据库数据创建索引文件导入操作的数据表数据(5万条记录)

// 注意:如果之前没有选择数据库,那么使用use选择数据库使用管理员权限的cmd

mysql > use forum ;

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

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

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

733961f05cbd51912b3f1b37101a4379.png

32bb72416a31e86f982879fe5ad95f95.png

bddd70761db9be93ca3b2bf7ea6a5704.png

4:查看索引文件

4.1 使用sphinx速度对比

安装sphinx服务使用管理员cmd执行以下命令

searchd.exe --install -c 配置文件路径 参数顺序一定要不能颠倒。

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

308d7072ec11d31e7adac7181f70ec46.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值