RoR - Facet Filtering方法

时间:2014-11-01 12:06:17

标签: ruby-on-rails facet

我有一个Ruby on Rails Web应用程序,为用户提供搜索/过滤功能。基本上我正在尝试为这种应用程序编程。 http://demo.srchulo.com/jquery/jquery_facets/

但是,我使用ActiveRecord(No Elasticsearch或Solr)进行搜索。现在我已经读过Elasticsearch和Solr支持facet搜索和facet过滤。因此,我想我是否需要实现Elasticsearch或Solr以进行构面过滤,或者我可以通过简单的Javascript查询实现这一点吗?如果可能的话,我想避免使用Elasticsearch或Solr。

提前致谢!

2 个答案:

答案 0 :(得分:0)

你在这里完全混合了所有技术。

  • javascript / jquery - >客户端浏览器脚本
  • 有效记录 - > serverside(关系)数据库(mysql?)ORM(对象关系映射器)
  • solr / elasticsearch - > serverside全文搜索服务

并且您的问题的总体答案是:它取决于!

我想你需要提供a)更多的上下文信息b)找出你的需求到底需要什么。

答案 1 :(得分:0)

我写了一个gem来创建简单的基于ActiveRecord的构面搜索。

如上所述,它使用group byhaving子句收集有关构面值的信息,并提供一个简单的API来访问构面并创建指向缩小结果的链接。

在您的视图中,您可以像任何其他ActiveRecord集合一样迭代结果

%table.table.table-condensed
  %tbody
    - @movies.each do |movie|
      %tr
        %td
          %strong=movie.title

Use the search object to display further narrowing options to the user

- filter = @search.filter(:genre)
.col-md-4
  .filter
    .filter-title= filter.name
    .filter-values
      %ul.selected
        - filter.selected.each do |genre|
          %li= link_to genre.name, filter.remove(genre).path
      %ul.selectable
        - filter.facet.reject(&:selected).each do |facet_value|
          - genre = facet_value.genre
          %li
            = link_to genre.name, filter.add(genre).path
            %span.count= "(#{facet_value.count})"

https://github.com/fortytools/forty_facets