轨道:像 Amazon.com 一样实现搜索/过滤



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

例如,用户可以根据-作者-额定值-类别

任何建议将不胜感激!

这种方法通常称为"分面"搜索。尝试:

  • http://railscasts.com/episodes/306-elasticsearch-part-1
  • http://railscasts.com/episodes/307-elasticsearch-part-2
  • https://github.com/elasticsearch/elasticsearch-ruby

我以前已经实现过搜索,我很幸运

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

最新更新