sphinx学习笔记

自己学习记录用的
sphinx是俄国人写的,我们一般用的是国人封装的coreseek,支持中文
,sphinx只支持utf8,不能用gbk编码
用处:全文索引

好处:

1、模糊查询%like时,不会全盘扫描磁盘,耗时短。2、中文搜索可以分词

用法:

1、sphinx和mysql独立分开,sphinx先查询mysql查到id,给php,php通过id在mysql查询目标记录
2、linux下,重新编译mysql,相当于mysql的插件存在,使用的时候感觉不到sphinx,这种方式叫se

具体使用:

三大步骤:
1、配置文件,数据源source,索引index(生成索引文件),search服务定义。
a)数据源:如果搜索包括商品名称和属性的时候
sql语句第一个字段必须是ID!!!!
多个字段拼成一个字符串的时候,可以使用GROUP_CONCAT(字段名)

sphinx学习笔记_第1张图片
主查询语句

如果考虑到根据销量、评论等进行排序,就要进行连表查询,比较复杂了
一个数据源对应一个索引,可以有多对出现
b)索引文件:索引文件设置数据源名称,索引文件存放路径
c)searchd服务定义:端口号默认9312,返回最大记录数默认1000,两个log文件,一个pid文件路径指定。必须填!!!!!
文件棉麻必须是utf8,而不是utf8+,用记事本打开就变成utf8+了

这时候就可以用命令生成索引了:bin目录=》indexr.exe,cmd内,1、-c指定配置文件路径 2、--all指定哪个数据源

sphinx学习笔记_第2张图片
生成索引文件操作

生成后的物理文件


sphinx学习笔记_第3张图片
sphinx索引文件

百万级数据可能半个小时吧,具体跟电脑性能有关系

2、启动服务
通过bin目录=》searchd.exe来启动服务


sphinx学习笔记_第4张图片
启动服务

查看服务


sphinx学习笔记_第5张图片
查看服务

sphinx学习笔记_第6张图片
查看服务

3、api
可以在写php脚本来实际查询一下,前提是把sphinx的php类文件复制到脚本中,就可以调用查询了。查询出来的是商品id,然后通过id再去mysql查询商品信息。

sphinx自动更新

添加数据源delta,索引delta,脚本自动运行

一、数据源

1、需要知道sphinx生成索引以后最后数据的id,因为id一般都是自增长。通过另外单独建立一个表,来记录这个最新id。
2、在config文件数据源添加个sql语句,即生成索引后自动执行的sql


sphinx学习笔记_第7张图片
sql_query
sphinx学习笔记_第8张图片
sql_query_post,自动执行sql,记录最大id

二、索引

sphinx学习笔记_第9张图片
添加index索引

三、脚本

sphinx学习笔记_第10张图片
windows bat脚本定期更新索引文件

如果是linux系统,sphinx相当于一个表了


sphinx学习笔记_第11张图片

你可能感兴趣的:(sphinx学习笔记)