2011-07-20 142 views
0

我在爲Rails應用程序實現特殊類型的搜索時遇到問題。我正在研究一個成就係統,您可以在搜索表單中搜索一組用戶(例如,查詢爲「Ross,Adam,Jake」),並返回用戶解鎖的所有常見成就(例如,如果用戶Ross,Adam和Jake都有一個名爲「你是贏家!」的成就)。我有三個表格,一個表示成就,一個表示用戶,一個表格。我們已經測試了這些關聯,所以我們知道這些作品。在Rails中返回搜索結果

我的第一個想法是將搜索條件放在一個數組中,並獲得數組中每個項目的搜索結果,並將它們放入各自的「搜索結果數組」中。然後,我正在考慮搜索搜索結果數組1中的每個項目,以查看它是否出現在其他結果數組中。出現在所有三個搜索結果數組中的對象將被返回並顯示在頁面上。

有沒有一種簡單的方法來實現這一點,而不寫一大堆我自己的代碼?有一些我應該知道的功能嗎?任何幫助將不勝感激!

+0

你看着獅身人面像 - http://sphinxsearch.com/ – KMC

+0

爲此,您可以使用連接和使用的find_by_sql編寫SQL呼叫有效記錄。 – naren

回答

0

那麼,Ransack和它的前身(MetaSearch)都是創建複雜搜索表單的有用寶石。

一般來說,我認爲你想爲數組中的用戶標識符選擇不同的成就標識符。關於我的頭頂,我不太清楚你應該怎麼寫......別人可能知道。

查看MetaSearch(更成熟)的文檔,看看是否看到適合的模式,如果不檢查Ransack(更高級的)。

0

你可以使用一些自動完成的插件爲用戶名稱和動態地將名稱轉換爲ID,這樣你就不必處理將用戶名轉換爲後端的ID。

對於常見的成就,如果用戶只能獲得一次成就,那麼將結果彙總到連接表中並用結果id對結果進行計數即可。

您可以提供更詳細的答案更詳細的信息。 :)

0

您可以使用Sunspot這是允許使用Ruby和Rails容易Solr的集成