2014-01-20 56 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