sphinx setOverride 思考

来源:互联网 发布:nds二手淘宝哪家店 编辑:程序博客网 时间:2024/04/28 14:42

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



0 0