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(字段名)

主查询语句

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

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

生成索引文件操作

生成后的物理文件


sphinx索引文件

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

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


启动服务

查看服务


查看服务

查看服务

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

sphinx自动更新

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

一、数据源

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


sql_query
sql_query_post,自动执行sql,记录最大id

二、索引

添加index索引

三、脚本

windows bat脚本定期更新索引文件

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


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容