sphinx setOverride 思考

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



發佈了73 篇原創文章 · 獲贊 11 · 訪問量 35萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章