我試圖在基於幾個屬性的模型上實現搜索功能。我想讓用戶能夠指定要過濾的屬性。這將是非常相似,任何電子商務網站,如Amazon.comRails:實現像Amazon.com一樣的搜索/過濾器
例如,用戶可以根據 過濾的 - 筆者 - 遊客 - 類
任何意見,將不勝感激!
我試圖在基於幾個屬性的模型上實現搜索功能。我想讓用戶能夠指定要過濾的屬性。這將是非常相似,任何電子商務網站,如Amazon.comRails:實現像Amazon.com一樣的搜索/過濾器
例如,用戶可以根據 過濾的 - 筆者 - 遊客 - 類
任何意見,將不勝感激!
我已實施搜索之前,我有這個
http://railscasts.com/episodes/111-advanced-search-form-revised
很大的運氣這不得不優勢節約搜索,b在它自己的模型中不會污染另一個模型,並且很容易實現,沒有任何寶石。
我強烈建議您使用Solr來處理您的問題,因此請考慮使用Sunspot作爲您對Solr的Ruby/Rails抽象。
你可以從文檔中看到的,你可以用這種方式定義的場面:
# Posts that match 'pizza' returning counts for each :author_id
search = Post.search do
fulltext "pizza"
facet :author_id
end
search.facet(:author_id).rows.each do |facet|
puts "Author #{facet.value} has #{facet.count} pizza posts!"
end
太陽黑子與Rails的融合也使得自動索引在save
回調對象保持Solr的索引輕鬆了許多。
我也有過類似的問題,但我不想使用外部服務像Solr的,或者ElasticSearch所以我建這個寶石:https://github.com/fortytools/forty_facets
多少的性能沒有影響Solr的或ElasticSearch?你什麼時候看到擴展問題? – user2012677
由於實際速度取決於您的模式和數據,因此很難提出一般指標。 過濾是通過非常簡單的連接和其中(...)查詢完成的。 因此,您在正常控制器方法中爲加速查詢所做的一切適用於此處 對於每個方面,都會發生一次'GROUP-BY'查詢。這些可能因成本和方面值的數量而有很大差異。 我並不認爲自己是一位數據庫專家,但只需掌握所有相關列的索引,對於具有高達100K行'基礎'實體和4-5方面的數據集,我沒有任何問題可以過濾。 –