高级技术sphinx笔记.docx
《高级技术sphinx笔记.docx》由会员分享,可在线阅读,更多相关《高级技术sphinx笔记.docx(16页珍藏版)》请在冰豆网上搜索。
高级技术sphinx笔记
sphinx技术
mongodb
简介
问题:
在实际开发中,对于大文本的字段,例如(text、varchar),在做查询的时候,一般我们会使用模糊查询,这个时候,如果是like%name%这样的查询,这个时候索引就会失效。
好比商品名称查询:
#select*fromtableNamewheregoods_namelike“%苹果%”;(%出现在关键字的最左边索引失效但是“苹%”这样不失效。
)
因为对MySQL数据库来说,它不清楚查询多少记录可以满足条件,只能做全表扫描。
甚至有可能拖垮MySQL服务器。
解决方案:
使用sphinx中文分词搜索引擎来实现全文搜索
英文分词比较简单实现,英文是以空格做区分的。
iamaboy.
例子:
中文分词:
衣服和服装
人的思维:
衣服服装(两件物品)
程序思维:
衣衣服衣服和和服服装服(程序分词是基于字频法)
字频法:
常见的汉字词语出现的概率是有规律可寻的。
好比拿红楼梦:
全部的文章做一次排序或者搜索,会发现很多词语都是重复的。
例子:
叔叔、哥哥、吃饭、干什么出现的次数满足一定的频率。
把这些单词形成一个词典。
在一次对语句做分词的时候,就去词典里面查找,看是否满足,满足的话就认为这是一个分词。
但是:
对于一些专业词汇(英语专业、化学专业),这个需要专门的人去做分词的词典。
这个时候是要收费的。
目前做的最好的就是XX,XX的中文分词技术是目前最厉害的(李彦宏),国内有家叫海量公司做的分词也不错。
搜索技术是为了以后人工智能、大数据库挖掘作准备的。
明白只有在数据量足够大的情况下,很多事情是满足一定的概率,是可以被计算的。
例如:
XX在做搜索的时候,会将搜索的关键字做一下分词,然后尽可能搜索出满足条件的信息(例如【红色的衣服】===红色衣服)
英文分词:
用空格分词iamaboy.
由于中文没有很好的分隔符,所以分词的时候,相对来说是很难的。
注意:
Sphinx是俄罗斯人开发的。
本身只支持俄文和英文。
但是有好事之人,就为Sphinx单独开发了中文分词包(分词词典)(将我们日常生活中使用的词语,分割成一个个的中文单词,形成一个很大的中文词库(类似一个数据字典、辞海)),但是如果专业词语分词(化学专业、法律),这个是要收费的。
在我们php开发中如何使用sphinx技术?
答:
对应MySQL数据库中的字段,就是将字段中的中文信息拆分成多个词语,然后对这些词语建立索引。
以后查询的时候,先去查询这些索引文件,然后返回这些满足条件的记录的主键id,然后根据主键id查询MySQL数据库,返回记录。
什么是sphinx?
(XX百科)
注意:
对于sphinx来说,单表千万条记录,响应的时间都是毫秒级别的。
注意:
默认sphinx只支持英文和俄文
官网:
由于Sphinx只支持以上两种语言,所以有第三方公司为sphinx开发了中分分词包,叫做coreseek
官网:
客户案例:
注意两点:
1.sphinx是一个全文搜索引擎,只支持俄文和英文
2.由于上面的原因,有专门的公司为其开发了中文分词包,叫做coresesk。
3.中国有一家做的比较好的公司(海量分词)
故事:
实操
1.下载
2.构建一个大数据的表(歌词表)
mysql>sourced:
/songs.sql
文件目录:
命令:
sphinx安装-使用
安装
千万注意:
sphinx的配置文件一定不能使用Windows的记事本打开。
(BOM头)
API接口文件:
可以用php调用该接口去操作sphinx服务器端的索引文件。
1.修改配置文件
索引文件
内存设置:
sphinxd配置:
2.建立索引
配置文件中index后面的名称
建立索引后的目录结构
3.实际使用
a.开启sphinx的服务,可以使用帮助信息查看如何使用
使用:
1.可以单独的读取配置文件运行
2.也可以安装成Windows的一个系统服务来运行
启动sphinx服务(读取配置文件单次启动)
定义为系统服务后(安装)
使用
1.具体使用(sphinx流程可以见下图)
sphinx流程图:
sphinx存储引擎:
通过下面的步骤发现,发现php程序在做查询的时候,必须先根据sphinx服务器返回主键ID,然后根据主键ID去查询MySQL数据库,最后返回数据库。
这个时候,可以这样思考,将sphinx作为MySQL的一个存储引擎使用,这个时候php程序就可以直接的去连接MySQL服务器,MySQL服务器去自身的sphinx存储引擎里面获取分词后的数据。
不需要连接一次sphinx服务器了。
这个存储引擎叫做sphinxSE。
2.简单使用
3.使用
案例:
在线歌词查询系统
场景:
用户在搜索框输入一个歌词相关的短语,然后查询出满足条件的信息,并高亮显示出来
1.建立一个搜索页面
点击【查询】发送ajax查询请求
2.创建一个后台脚本文件,处理前台请求
3.前台拼接字符串显示
4.效果