关于 iPad 的胡思乱想(1)    2010-09-07 20:51:24

登陆|免费注册|会员中心|招贤纳士|手机留言|联系我们

 
 

好好学习网--关于sphinx的搜索

作者:网络文章来源:互联网浏览次数:10 发表时间:2010-09-07返回列表

=======================第一页=======================

楼  主:不知道这里有多少人使用过sphinx。
关于属性筛选功能,想问一下。
就是像淘宝一样,可以按各种属性组合搜索,如何:品牌:联想 操作系统:Windows 适合人群:年轻人
这样的搜索如何做:)
楼 1:哈哈,以前有人说过一个更好的办法。做完网站让百度和Google帮你搜
楼 2:没用过,这种一般是自己写SQL
查询条件1
AND
查询条件2
AND
....
楼 3: 本帖最后由 moo 于 2010-7-22 09:07 AM 编辑

首先把属性分组,例如笔记本,属性分组是:
Id   名称
1    品牌
2    屏幕大小
3    cpu型号

每个属性有属性值:
Id   分组Id   名称
1    1          联想
2    1          惠普
3    1          戴尔
4    2          1024*768
5    2          1440*900

笔记本商品需要添加一个pro_string字段(这个字段可以可无,可在生成sphinx数据的时候动态生成):
例如:"1:1;2:5;",则表示这个笔记本是联想,1440*900分辨率

用sphinx查询时使用“1:1;”来匹配,就可以查询到联想的笔记本
用sphinx查询时使用“1:1; 2:5;”来匹配,就可以查询到联想,1440*900的笔记本
用sphinx查询时使用“(1:1;|1:2;) 2:5;”来匹配,就可以查询到联想,惠普,1440*900的笔记本
请注意红字部分

这是数据量大,如果数据规模小,也可以用3#的方法
楼 4:补充几点:
1. 如果数据规模小,可以用3#的方法,sql语句比较复杂,肯定无法命中索引,做好缓存
2. “(1:1;|1:2;) 2:5;”中的":",";"只是分隔符号,有些版本的sphinx用“:;”可能有问题,可以用字母"ab"代替
楼 5: 本帖最后由 喜悦村会计 于 2010-7-22 01:13 PM 编辑

sphinx的属生筛选有啥问题吗?sphinx不是有SetFilter这个api吗?

5.4.2. SetFilter
原型: function SetFilter ( $attribute, $values, $exclude=false )
增加整数值过滤器。
此调用在已有的过滤器列表中添加新的过滤器。$attribute是属性名。$values是整数数组。
$exclude是布尔值,它控制是接受匹配的文档(默认模式,即$exclude为假时)还是拒绝它
们。
只有当索引中$attribute列的值与$values中的任一值匹配时文档才会被匹配(或者拒绝,如
果$exclude值为真)
楼 6:“或”查询用SetFilter好像是没办法的
例如要查品牌是联想,或者惠普

还有就是效率问题,没有仔细测试过,有兴趣的可以测试一下
楼 7:这里其实有一个比较重要的需求
我需要统计出每个属性下面有多少产品

这个我已经搞定了,用的是SetFilter
这个接口很奇怪,如果直接传入array(1,2)是1或2都可以出来
如果调用两次,一次是array(1)一次是array(2)这样就产生了,1 AND 2的效果。
楼 8:统计每个属性下有多少个产品也是可以做的用SetGroupBy和SetGroupDistinct


感谢用户[互联网用户]  IP[38.107.191.80]  时间[2010-09-07 20:54:02]提供辛勤劳动!

返回列表回到顶部

相关问题信息:好好学习网--关于phplist 的问题。

相关问题信息:好好学习网--如何查询然后插入数据库记录

相关问题信息:好好学习网--php可以直接启动exe吗?

相关问题信息:好好学习网--怎么安装Php呢?

相关问题信息:好好学习网--php_memcached.dll 谁有?

相关问题信息:好好学习网--怎样重新载入数据

相关问题信息:好好学习网--一个问题

相关问题信息:好好学习网--诚聘技术支持

相关问题信息:好好学习网--求 Php如何存入图片到 mssql数据库里啊??

相关问题信息:好好学习网--请教各位大大,这是什么编码

相关问题信息:好好学习网--微薄同步工具底层实现方式(欢迎拍砖)

相关问题信息:好好学习网--求助PHP访问方式问题

相关问题信息:好好学习网--取得选择框的值

相关问题信息:好好学习网--抓取搜索结果的时候,如何防止域名被封?

相关问题信息:好好学习网--如何实现在线客服系统

相关问题信息:好好学习网--请问下中文地址的伪静态怎么写啊

相关问题信息:好好学习网--IIS是不是不支持这种格式啊?/index.php/archives/1

相关问题信息:好好学习网--如何连接序号显示呢

相关问题信息:好好学习网--cookie可以解决这件事儿吗?

相关问题信息:好好学习网--连续数字不能执行