sphinx setOverride 思考
2015-09-09 15:56
225 查看
SetOverride (设置临时属性值覆盖) 个性化设置
原型: function SetOverride ( $attrname, $attrtype, $values )设置一个临时的(只对单个查询有效)针对不同文档的属性值覆盖。只支持标量属性。$value是一个哈希表,他的键是要覆盖属性的文档ID,之是对应该文档ID的要覆盖的值。于版本0.9.9-rc1引入。
属性覆盖特性使用户可以针对一次查询“临时性地”修改一些文档的值,不影响其他查询。这个函数可以用来进行数据个性化。例如,假设正在实现一个个性化搜索函数,用来将朋友推荐的帖子排在前面,这类数据不仅是动态的,而且是个性化的,因此不能简单地把这种数据放入索引,因为不能影响其他用户的搜索。而覆盖机制是针对单个查询的,不会影响其他人。因此可以,比如说,给每个文档设置一个“friends_weight”属性,默认值是0,然后临时将文档123,456,789(当前用户的朋友推荐的)的这个属性设置为1,最后用这个值进行相关度计算。
* $value是包含id,val的hash 数据
1,查询需要优先显示的内容的ID,并得到他们的优先级。
2 , 生成hash的$val
3 , 在查询的时候,增加此参数(friends_weight)设置
4,使用调用此属性做参数的 “排序模式”
SPH_SORT_ATTR_ASC 模式等价于"attribute ASC, @weight DESC, @id ASC",而SPH_SORT_ATTR_DESC 等价于"attribute DESC, @weight DESC, @id ASC"
在 SPH_SORT_EXTENDED2 模式中,您可以指定一个类似SQL的排序表达式,但涉及的属性(包括内部属性)不能超过5个,例如:@relevance DESC, price ASC, @id DESC
相关文章推荐
- HDU 5033 Building
- jQuery基础
- busybox 安装方法
- Eclipse中Java项目打包——外部jar包位置 ,生成jar包位置,mf文件书写等问题
- 多线程下载
- express 框架之session (cookie和session介绍)
- jvm 学习
- iOS手势学习
- 修改easyui日期控件只显示年月,并且只能选择年月
- 人件札记:聚餐活动
- LeetCode:Reverse Integer
- TabHost 选项卡
- Win10电脑装机必备的5款软件
- 进程pid,ppid;进程uid,euid;用户uid,guid
- 从零开始编写图片加载库(五)之图片缓存DiskCache
- Spark学习1-wordcount
- jeasyui在页面显式创建dialog并兼容IE8
- python运算符
- Qt线程的简单使用
- Leetcode H-Index II