Rails:像Amazon.com一样实施搜索/过滤

时间:2014-02-21 05:34:55

标签: ruby-on-rails ruby ruby-on-rails-4

我正在尝试在基于多个属性的模型上实现搜索功能。我想让用户能够指定要过滤的属性。它与任何电子商务网站非常相似,例如Amazon.com

例如,用户可以基于进行过滤 - 作者 - 评分 - 类别

任何建议都会非常感激!

4 个答案:

答案 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