自己学习记录用的
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相当于一个表了
表











网友评论