是否有可能使用思維獅身人面像爲它輸出8(或其他指定)類似的用戶?例如,我在加利福尼亞州的一個男性個人資料頁面上。在類似用戶部分下,它會顯示來自加利福尼亞州的另外8位男性。這將是一個隨機的8,沒有具體的順序。只是當前用戶頁面的性別和狀態位置必須相同。顯示類似用戶
我明白與獅身人面像實施地理距離,好奇如何根據用戶信息顯示類似的結果。有人有這樣的例子嗎?
是否有可能使用思維獅身人面像爲它輸出8(或其他指定)類似的用戶?例如,我在加利福尼亞州的一個男性個人資料頁面上。在類似用戶部分下,它會顯示來自加利福尼亞州的另外8位男性。這將是一個隨機的8,沒有具體的順序。只是當前用戶頁面的性別和狀態位置必須相同。顯示類似用戶
我明白與獅身人面像實施地理距離,好奇如何根據用戶信息顯示類似的結果。有人有這樣的例子嗎?
你可以採取iMacTia建議的地理距離方法 - 雖然我擔心這可能是矯枉過正。
我假設狀態和性別都是您的獅身人面像索引中的字段爲用戶。這是在您的控制器的上下文中,您正在查看@user
並且需要類似的用戶。
User.search(
:conditions => {:state => @user.state, :gender => @user.gender}
:without => {:sphinx_internal_id => @user.id},
:order => 'RAND()',
:per_page => 8
)
打破每一個選項:
sphinx_internal_id
) 。首先,您需要實現sphinx地理距離,如圖所示here。 一個你都做到了(假設你沒有爲它的用戶表),你現在可以做的:
@compatible_users = User.search "keyword", :geo => [@lat, @lng],
:with => {'@geodist' => 0.0..10_000.0}
您可以使用「關鍵字」,你更喜歡。 @lat
和@lng
是current_user座標,@geodist以米表示(因此在這種情況下表示「從0到10km」)。 您還需要對性別條件(對不起,我不知道你的模型字段的名字,但如果你知道如何使用獅身人面像這不應該是一個問題) 一旦你的@compatible_users
收集,任務我們隨機選擇其中的一些:
n = 8 # This is the number of users you want.
# Ruby 1.9+
@ result = @compatible_users.sample(n)
# Ruby 1.8
@ result = @compatible_users.shuffle[0...n]
,你有你的用戶兼容在@result
:)
請記住,如果@compatible_users.size
低於n
你會使用shuffle
出現錯誤和較短的陣列使用sample
。所以你可能需要檢查它,並最終做更廣泛的另一個獅身人面像搜索@geodist
對不起,究竟是什麼問題呢?在獅身人面像中選擇兩個具體標準是最直接的事情......這是什麼問題?對他們來說是隨機的,還是要添加地理位置? – 2014-11-28 13:52:43