使用Solr Sunspot搜索

时间:2014-01-20 05:37:18

标签: ruby-on-rails ruby sunspot

我正在使用Sunspot进行搜索功能。这是我的控制器文件。

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

       end
     @results = search.results
     end

我有一个模型,我的产品有name,maxprice,minprice等, 仅当我插入

时,搜索功能才起作用
     fulltext 'Nike'

然后它显示所有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>

请帮我解决这个问题。

2 个答案:

答案 0 :(得分: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

在模型中,`关键字引用,:fields =&gt; [:user_name,:food_habits,:age]

默认情况下,

关键字方法包括所有文本字段,除非选项`

另有说明

答案 1 :(得分: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