如何使用Sunspot / Solr搜索表关联

时间:2013-04-26 18:24:40

标签: ruby-on-rails-3 sunspot sunspot-rails sunspot-solr

我是Sunspot / Solr的新手,我在使用全文搜索在我的网站上工作时遇到了问题。请找到以下代码:

/models/product.rb

attr_accessible :category_id, :title, :description
belongs_to :category

searchable do 
  text :title, :description
end

/models/category.rb

has_many :products

/controllers/categoriescontroller.rb

def show
  @category = Category.find_by_slug!(params[:id])
  @search = @category.products.solr_search do
    fulltext params[:search]
  end
  @products = @search.results
end

/views/categories/show.html.erb

<%= form_tag @category, :method => :get do %>
   <p>
     <%= text_field_tag :search, params[:search] %>
     <%= submit_tag "Search", :name => nil %>
   </p>
<%end%>

我想搜索属于特定类别的产品。例如,如果参数中的类别是:fiction,我想将搜索结果限制为该类别下的产品。但是,如果我搜索上面的代码,请说“丢失”&#39; ,我得到所有匹配的产品&#39;丢失&#39;在所有类别下。我无法理解我在这里做错了什么。请帮忙。

1 个答案:

答案 0 :(得分:0)

我在阅读太阳黑子维基之后想出了怎么做。在类别controller.rb

if(params[:search] != nil)
    @search = Product.solr_search do
      with :category_id, Category.find_by_slug!(params[:id]).id
      fulltext params[:search]
    end
    @products = @search.results
  else
    @products = @category.products
end