2012-02-01 24 views
0

我正在使用思維獅身人面像來搜索一個文章數據庫,我想在創建日期中加權,所以新文章首先顯示,但我不想使用排序,因爲它會顯示最新的文章,而不管它們的相關性。如何在思考獅身人面像中衡量文章的創建日期?

有沒有什麼方法可以在創建日期加權,所以它會傾向於向我展示新的文章,但也會考慮順序中的其他因素?

回答

2

您將需要創建自己的排序算法,混合權重和創建時間戳。也許最好有時間戳作爲核心權重,因爲默認情況下它會是更大的值 - 然後在添加相關性分數之前提高相關性分數?

Model.search :sort_mode => :expr, :order => 'created_at + (@weight * 1000)' 

查看此Thinking Sphinx docs更多細節 - 和Sphinx docs覆蓋可用的數學函數,太。

+0

我最終做了這樣的事情。在索引中創建一個自定義字段:'has「DATEDIFF(NOW(),products.created_at)」,:as =>:days_old,:type =>:integer'然後':order =>'@weight *(1 +(1/days_old))' – Diego 2012-02-03 16:30:11

+0

如果你在Sphinx v1或v2上,你也可以嘗試時間段排序,正如Pat在這裏解釋的:http://pat.github.io/thinking-sphinx/searching/ts2。 html#sorting – 2013-04-17 18:23:48

+0

如果重量很大並且記錄最近的話,這可能會中斷..它溢出,因此總分接近於零..我使用'@weight * 10 + created_at/100'來實現相同的效果,但沒有這個種問題... – davidhq 2013-05-12 22:18:12