我正在尝试在基于多个属性的模型上实现搜索功能。我想让用户能够指定要过滤的属性。它与任何电子商务网站非常相似,例如Amazon.com
例如,用户可以基于进行过滤 - 作者 - 评分 - 类别
任何建议都会非常感激!
答案 0 :(得分:2)
这种方法通常被称为“分面”搜索。尝试:
答案 1 :(得分:2)
之前我已经实施了搜索,我很幸运。
http://railscasts.com/episodes/111-advanced-search-form-revised
这有利于保存搜索,在其自己的模型中不会污染其他模型,并且可以在没有任何宝石的情况下轻松实现。
答案 2 :(得分:2)
我强烈建议您使用Solr来处理您的分面,因此请考虑使用Sunspot作为您的Ruby / Rails抽象而不是Solr。
从文档中可以看出,您可以通过以下方式定义字段:
# 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索引。
答案 3 :(得分:1)
我遇到了类似的问题,但我不想使用像Solr或ElasticSearch这样的外部服务,所以我构建了这个gem:https://github.com/fortytools/forty_facets