【问题标题】:Sunspot Solr Rails - hidden fields scoping and associated modelsSunspot Solr Rails - 隐藏字段范围和相关模型
【发布时间】:2012-06-20 15:34:21
【问题描述】:

我想使用隐藏字段参数 (colour_id) 来优化我对与特定颜色相关的面料的搜索。

面料有多种颜色、供应商和类别

但是,我希望搜索表单 (colour_ids) 中隐藏字段中的参数过滤面料,以便仅搜索与这些颜色相关的面料。

据我所知,最好的方法是将范围添加到我的搜索中,并将这些隐藏字段的参数传递给范围,以将搜索结果缩小到仅与这些颜色相关联的面料。

我的面料模型是这样的

class Fabric < ActiveRecord::Base
  has_many :fabric_categories
  has_many :categories, :through => :fabric_categories
  has_many :suppliers, :through => :fabric_suppliers
  has_many :fabric_suppliers
  has_many :colours, :through => :fabric_colours
  has_many :fabric_colours


  # solr search method
  searchable do
  text :name, :boost => 5
  text :description
  text :categories do
    categories.map(&:name)
  end
  text :suppliers, :boost => 2 do
   suppliers.map(&:name)
   end
  end

我的控制器

  class FabricsController < ApplicationController

  def index
    @search = Fabric.search do
    fulltext params[:search]

     #scoped assets
     @fabrics = @search.results

我的看法

  <%= form_tag fabrics_path, :method => :get, :class => 'form-search'  do %>
    <%= text_field_tag :search, params[:search], :class => 'query', id: "auto_complete", :placeholder => '', :autocomplete => "off" %>
    <div id="colour_ids">
      <%= hidden_field_tag :colour_1 %>
    </div>
    <%= submit_tag "Search", :name => nil, :class => 'btn', :id => 'search_button' %>
  <% end %>

【问题讨论】:

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


    【解决方案1】:

    您需要将 category_ids 添加到索引中,方法是将其包含在您的 searchable 块中:

    searchable do
      ...
      integer :colour_ids, :multiple => true do
        colours.map(&:id)
      end
    end
    

    完成此操作后,您需要重新索引。

    然后在您的查询中,您需要在FabricsController#index 中包含这样的条件:

    @search = Fabric.search do
      fulltext params[:search]
      with :colour_ids, params[:colour_1]
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多