我正在編寫我的第一個Ruby on Rails應用程序,並需要實現「搜索」功能。它需要搜索數據庫(3個不同表格中的每個表格有1列),並返回3個類別中每個類別中最相關的結果。有點像你如何在亞馬遜網站上進行搜索,將返回來自所有不同部門的結果。在Ruby on Rails 3應用程序中實現搜索?
在Ruby on Rails的世界中是否有一個寶石/庫/常用技術,我應該知道的(這與Rails 3一起工作)?否則,我應該怎麼做才能在我的應用程序中實現搜索功能?
我正在編寫我的第一個Ruby on Rails應用程序,並需要實現「搜索」功能。它需要搜索數據庫(3個不同表格中的每個表格有1列),並返回3個類別中每個類別中最相關的結果。有點像你如何在亞馬遜網站上進行搜索,將返回來自所有不同部門的結果。在Ruby on Rails 3應用程序中實現搜索?
在Ruby on Rails的世界中是否有一個寶石/庫/常用技術,我應該知道的(這與Rails 3一起工作)?否則,我應該怎麼做才能在我的應用程序中實現搜索功能?
可能您需要使用一些搜索引擎。看看thinking sphinx插件。我也使用acts_as_ferret,但它可能會導致一些問題。
我不知道是否有一個插件可以完成您想要的所有功能。我會做這種方式:
谷歌是你的朋友:take a look here和here。
我認爲這取決於您對搜索的「嚴重」程度。
如果您只是想在一些簡單的VARCHAR字段中進行搜索,您可以通過生成一些「LIKE'%xyz%'」語句來手動執行該操作,那麼所需的只是一個插件,可以幫助您。我最喜歡的是searchlogic。它可以在模型中啓用相當多的方便動態範圍,您可以將它們鏈接在一起(與其他範圍一樣)。例如,你可以寫這樣的事情:
User.last_name_like("Doe").age_gt(30).age_lt(40)
下面是關於如何使用它的其他功能great screencast。
但是,SQL LIKE語句並不適合在大塊文本中搜索。所以如果這就是你所需要的,你最好使用實際爲你的數據建立索引的插件。
在這種情況下,thinking sphinx(在其他答案中提到)是一個很好的解決方案。請記住,它需要一些特定於平臺的安裝步驟,並且只適用於PostreSQL和MySQL(它不適用於Rails的默認SQLite)。使用它也不那麼簡單 - 您需要定義要搜索的每個模型的索引,構建索引,啓動Sphinx等。