0

我对 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

/控制器/类别控制器.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 ,我想将我的搜索结果限制为该类别下的产品。但是,如果我使用上面的代码搜索“丢失”,我会在所有类别下获得与“丢失”匹配的所有产品。我无法理解我在这里做错了什么。请帮忙。

4

1 回答 1

0

我在阅读太阳黑子 wiki 后想出了如何做到这一点。在类别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
于 2013-04-27T04:03:21.970 回答