簡體   English   中英

Rails - 我應該使用什么進行搜索?

[英]Rails - What Should I use for Search?

我對搜索有一些特定的需求,我有興趣了解人們對搜索方法最有意義的看法。 根據我下面的解釋,你會建議我使用基本的SQL查詢嗎? 或者升級到更高級的搜索解決方案,比如Sphinx?

我有兩個我想要搜索的模型:產品和品種。

產品has_many :varieties
品種belongs_to :product

我需要我的搜索來識別產品和品種之間的關系。 然而,品種在網站上沒有自己的存在。 因此,當用戶搜索系統中的各種類型時,我需要搜索以返回該品種所在的相應產品頁面。

例如,讓我們說產品是球,品種是有彈性的。 如果用戶搜索“bouncy”,我希望搜索返回球/節目視圖。

另一個調整涉及結果。 如果給定搜索只有一個結果,我想渲染產品/顯示頁面。 但是,如果有多個結果,我想渲染產品/索引頁面,顯示多個結果。 我的數據集是一個非常有限的宇宙,所以我認為我們只有一個結果會相當普遍。

這些是我的要求。 我可以使用標准的SQL查詢和條件滿足這些要求嗎? 或者您會推薦更高級的搜索方法嗎?

謝謝!

這兩種解決方案都能滿足您的要求,但只有在數據集很小的情況下,您才能使用標准SQL查詢來滿足它。 在這種情況下,搜索到的查詢的DB索引很重要。 你可以看看我用於小項目的scoped_search並完成工作。

如果你有一個大數據集並且普通的SQL查詢會讓你失望,那么sphinx(和思考 - sphinx )就是你要走的路。 這種方法的唯一缺點是必須監視和維護另一個守護進程,盡管它非常穩定和輕量級。 這個解決方案也非常容易實現,並且有一個很好的社區思維 - 獅身人面像。

最后,您可以考慮數據庫的全文搜索功能。 如果您正在使用PostgreSQL,tsearch是一個很好的解決方案,因為它非常快並且內置於您的數據庫進程中。 有幾個Rails插件可以與它進行交互: act-as-tsearchtsearchable 嘗試一下,看看哪個感覺更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM