小编带你学习sphinx

1. 为什么要使用sphinx

在实际开发中,对于大文本的字段,例如(text、varchar),在做查询的时候,一般我们会使用模糊查询,这个时候,如果是like %name%这样的查询,这个时候索引就会失效。

好比商品名称查询:

# select * from tableName where goods_name like "%苹果%";(%出现在关键字的最左边 索引失效 但是"苹果%"这样不失效。)

但是使用这种 like "%关键字%"做模糊的场景非常多,比如做一个歌曲网站按照歌词做模糊查询,但是这时候如果使用 like "%关键字%" 形式就不会使用到索引查询.

解决方案:采用sphinx中文分词技术

2. sphinx介绍

由于sphinx是俄国人的开发,默认只支持俄文和英文。这个时候有一家做中文分词的公司对sphinx进行二次开发形成一个产品,叫做coreseek(中文版的sphinx)。

小编带你学习sphinx

注意:对于shpinx来说查询速度都是毫秒级别,速度非常快

coreseek是一款基于sphinx开源的搜索引擎,专门为用户提供免费的中文全文检索系统,coreseek被称为带有中文分词的sphinx,与sphinx不同的是coreseek增加了一个带有中文分司的词库

注意:默认sphinx只支持英文和俄文

sphinx官网:http://sphinxsearch.com/

小编带你学习sphinx

由于Sphinx只支持以上两种语言(英文和俄文),所以有第三方公司为sphinx开发了中分分词包,叫做coreseek

coreseek官网:http://www.coreseek.cn/

另外在中国有一家做的比较好的中文分词公司叫做海量公司

海量公司官网:http://www.hylanda.com/

面试技巧:

小编带你学习sphinx

3. 中文分词的理解

中文分词:指的是将一个汉字序列切分成一个一个单独的词

英文分词比较简单实现,英文是以空格做区分的。 i am a boy.

例子:

中文分词:炎热的夏天

人的思维:炎热 夏天 (两个词)

程序思维: 炎,炎热,炎热的.的夏天,夏天 (程序分词是基于字频法

字频法:常见的汉字词语出现的概率是有规律可寻的。

比如拿一本书来说:全部的内容做一次排序或者搜索,会发现很多词语都是重复的。

例子:你好、吃饭了吗、我等你、干什么等词语出现的次数满足一定的频率。把这些词语进行分词形成形成一个分词词典。再一次对这些词语做分词的时候,就去词典里面查找,如果找到了就说明有该词语的相关分词.

但是:对于一些专业词汇(化学,物理,法律),这个需要专门的人去做分词的词典。这个时候是要收费的。

如在百度搜索输入以下关键字擦查询:

小编带你学习sphinx

2. 使用php操作sphinx

php操作sphinx的原理图

小编带你学习sphinx

具体使用sphinx

①把课件中的sphinx复制到自己任意的一个目录(D:/)并且重命名为sphinx

小编带你学习sphinx

②打开复制过去的sphinx的目录的etc目录,复制一份配置文件为songs.conf

小编带你学习sphinx

③构建歌曲数据,导入mysql中

小编带你学习sphinx

小编带你学习sphinx

小编带你学习sphinx

④打开刚才复制配置文件songs.conf,做以下修改

源配置(source)

小编带你学习sphinx

index索引的配置:

小编带你学习sphinx

内存分配:

小编带你学习sphinx

小编带你学习sphinx

⑤.给sphinx创建索引文件:

小编带你学习sphinx

小编带你学习sphinx

⑥开启sphinx的服务

帮助手册:

小编带你学习sphinx

开启服务(注意此黑窗口不要关闭):

小编带你学习sphinx

小测试(php操作sphinx)

①复制接口文件(sphinxapi.php)到网站目录下面

小编带你学习sphinx

②新建一个文件demo.php连接sphinx

小编带你学习sphinx

取出匹配到的记录id,组装成字符串形式:

小编带你学习sphinx

3. 案例-歌曲查询系统:

使用技术:Ajax+sphinx实现:

服务端代码:

小编带你学习sphinx

小编带你学习sphinx

ajax获取的核心代码:

小编带你学习sphinx

小编带你学习sphinx

最终效果:

小编带你学习sphinx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值