2012-05-07 87 views
3

簡單的問題,如何使用太陽黑子搜索多個模型?...我使用太陽黑子與Rails,我似乎無法找到我如何搜索多個模型。我是否需要創建一個單獨的控制器,或者是否可以使用具有索引操作的Gear Controller?在太陽黑子/ Solr中同時搜索多個模型導軌

感謝您的幫助。

(邊注:我發現非常相似,這個計算器上的一個問題,但他們並沒有發佈其code..so我的任何冗餘道歉。)

我已經在我的觀點如下:

<div class="side_bar_search"> 
    <%= form_tag gears_path, :method => :get do %> 
     <p> 
     <%= text_field_tag :search, params[:search] %> 
     <%= submit_tag "Search", :name => nil %> 
    <% end %> 
</div> 

及以下車型

齒輪

class Gear < ActiveRecord::Base 
    attr_accessible :title, :size, :price, :sub_category_id, :user_id, :image, :image_a, :remote_image_url 
    belongs_to :user 
    belongs_to :sub_category 
    has_one :category, :through => :sub_category 
    has_many :comments, :dependent => :destroy 
    require 'carrierwave/orm/activerecord' 
    mount_uploader :image, GearpicUploader 
    mount_uploader :image_a, GearpicUploader 


    searchable do 
    text :title, :size, :price #need to add sub-category, and User Name. 
    end... 

用戶

class User < ActiveRecord::Base 
    attr_accessible :first_name, :last_name, :email, :password, :password_confirmation, :userimage, :remove_userimage 
    has_secure_password 
    has_many :gears 
    has_many :comments, :dependent => :destroy 
    has_one :store, :dependent => :destroy 
    before_save :create_remember_token 
    require 'carrierwave/orm/activerecord' 
    mount_uploader :userimage, UserpicUploader 

    searchable do 
    text :first_name, :last_name 
    end...      

齒輪控制器

class GearsController < ApplicationController 
    def index 
    @search = Gear.search do 
     fulltext params[:search] 
     paginate(page: params[:page]) 
    end 

    @gears = @search.results 
    end... 

回答

11
Sunspot.search [Gear, User] do 
    .... 
end 
+0

完美...謝謝。 – DaveG

+1

不幸的是,如果你分頁並且在Gear中有足夠的結果,它將不會返回任何用戶對象。我一直希望能夠得到兩個結果並按照相關性排序。 – Kevin

+0

@Kevin,你能通過創建日期排序來獲得Gear和User的混合列表嗎? – kobaltz