【发布时间】:2014-06-04 20:11:35
【问题描述】:
我正在尝试在基于多个属性的模型上实现搜索功能。我想让用户能够指定要过滤的属性。它与任何电子商务网站(例如 Amazon.com)非常相似
例如,用户可以根据 - 作者 - 评分 - 类别
任何建议将不胜感激!
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4
我正在尝试在基于多个属性的模型上实现搜索功能。我想让用户能够指定要过滤的属性。它与任何电子商务网站(例如 Amazon.com)非常相似
例如,用户可以根据 - 作者 - 评分 - 类别
任何建议将不胜感激!
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4
我之前已经实现了搜索,我很幸运
http://railscasts.com/episodes/111-advanced-search-form-revised
这具有保存搜索的优势,在它自己的模型中不会弄脏其他模型,并且无需任何宝石即可轻松实现。
【讨论】:
我强烈建议使用 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
Sunspot 与 Rails 的集成还通过在 save 回调中自动索引对象,使维护 Solr 索引变得更加容易。
【讨论】:
我也遇到过类似的问题,但我不想使用像 Solr 或 ElasticSearch 这样的外部服务,所以我构建了这个 gem:https://github.com/fortytools/forty_facets
【讨论】: