发布时间:2019-08-13 09:30:07 作者:佚名 阅读:(13)
最近网站使用了sphinx,在查询的时候用到了多个条件,平时只用一个条件,直接拿过来用了,多个条件的时候发现不怎么好用了,经常查找发现还有一个setFilter属性可以设置,接下来吾爱编程就为大家介绍一下,有需要的小伙伴可以参考一下:
1、需求描述
mysql中,每一个文档都有多个标签,查询时可以筛选一个标签也可以筛选同时拥有多个标签的文档。
2、数据示例
文档 标签 1 1,2,3,4,5 2 2,3,4,5,6 3 3,4,5,6,7 4 4,5,6,7,8 5 5,6,7,8,9注意:
sql_attr_multi = uint tagid from query;\ SELECT id,tagid FROM fy_content_tag2、执行查询
$sphinx->setFilter('tagid', array(2));2、查出同时拥有标签2,3,4的文档
$sphinx->setFilter('tagid', array(2)); $sphinx->setFilter('tagid', array(3)); $sphinx->setFilter('tagid', array(4));这里解释一下:
$sphinx->setFilter(‘tagid’, array(2,3,4)); 是表示含有标签值2,3,4中的任意一个即符合筛选,这里是or关系。 $sphinx->setFilter(‘tagid’, array(2)); $sphinx->setFilter(‘tagid’, array(3)); $sphinx->setFilter(‘tagid’, array(4));设置三个filter是标示,要同时满足2,3,4三个属性值才符合,这里是and关系。
sql_attr_multi = ATTR-TYPE ATTR-NAME ‘from’ SOURCE-TYPE \ [;QUERY] \ [;RANGE-QUERY]其中
sql_attr_multi = uint tag from field; sql_attr_multi = uint tag from query; SELECT id, tag FROM tags sql_attr_multi = uint tag from ranged-query; \ SELECT id, tag FROM tags WHERE id>=$start AND id<=$end; \ SELECT MIN(id), MAX(id) FROM tags使用field类型时,field字段的值应该是以英文逗号隔开的多个无符号32位整数,如:1,2,3,4
欢迎分享转载→ sphinx过滤方法setFilter()
Editplus删除空白行
发布时间:2019-12-06Linux下删除指定文件夹下指定后缀名的文件
发布时间:2019-12-05linux下Screen退出方法
发布时间:2019-12-04CentOS下screen命令详解
发布时间:2019-11-27Linux流量监控工具 - iftop
发布时间:2019-11-26Nginx HTTP/2和mp4模块远程拒绝服务漏洞
发布时间:2019-11-26ipset定时读取指定文件内的IP进行封禁
发布时间:2019-11-21CentOS7安装iptables防火墙
发布时间:2019-11-14Centos使用rsync同步本地文件夹
发布时间:2019-09-25sphinx过滤方法setFilter()
发布时间:2019-08-13© 2015-2019 - 吾爱编程网 版权所有 苏ICP备18033726号-1关于我们 - 网站声明 - 联系我们