2014-01-20 57 views
1

我正在使用太阳黑子进行搜索功能。这是我的控制器文件。使用Solr太阳黑子进行搜索

 def show 
     search = Clothes.search do 
     fulltext 'params[:name]' 
     paginate :page => 1, :per_page => 30 

     end 
    @results = search.results 
    end 

我已经在那里我已经有产品名称,maxprice,minprice等模型, 搜索功能工作只有当我插入

 fulltext 'Nike' 

但随后它会显示所有耐克产品用于任何搜索查询。 你们能帮我一下吗?

这是我的模型

class Clothes < ActiveRecord::Base 

     searchable do 
     text :name, :default_boost => 1 
     integer :discount 
     float :maxprice 
     float :minprice 
     string :image 
    end 

而且我的视图文件。

  <h1>Results for your search.</h1> 
     <%= render "shirts/new"%> 


     <table><tr><th>Name</th><th>Max. Price</th><th>Min. Price</th><th>Discount</th><th>Image</th></tr> 

    <% for prod in @results %> 
    <tr><td><%= prod.name %></td><td><%= prod.maxprice%></td><td><%= prod.minprice%></td><td><%= prod.discount%></td><td> <%= image_tag(prod.image, :alt => "logo", :size => "75x75") %> </td></tr> 

      <% end %> 
      </table> 

请帮我解决这个问题。

回答

0

尝试此,我已经使用这个代码段长的时间回来。它应该工作

 search = Sunspot.search(Food) do 
     keywords reference if reference.present? 
     with(:vendor_id).any_of(vendor_ids) if vendor_ids.present? 
     order_by :created_at, :desc 
     paginate(:page => page, :per_page => per_page) 
     end 

在模型中,`关键字参考,:字段=> [:USER_NAME,:food_habits,:年龄]

关键字默认方法包括所有文本字段除非通过选项另有规定`

+0

我感谢您的帮助。但是当我添加了你的代码段时,它说未定义的方法引用。 – Raghuveer

0

请注意,您将字符串'params[:name]'传递给fulltext方法,而不是params[:name]本身的值。将其更改为:

def show 
    search = Clothes.search do 
    fulltext params[:name] 

    paginate :page => 1, :per_page => 30 
    end 
    @results = search.results 
end 
+0

尝试过,但仍然无法正常工作。 – Raghuveer

+0

虽然它做了什么不同吗?你确定你的模型正确索引? – fivedigit

+0

当我不给任何输入时,它显示数据库中的所有内容。但是当我输入关键字时,它不会输出任何内容。当我使用rake sunspot重新索引我的数据库:reindex。它显示了这个:[############################################# ##################################] [8/8] [100.00%] [00:00] [ 00:00] [89.15 /秒]。它是否正确地重新索引? – Raghuveer