2015-03-19 63 views
0

我使用ES和Searchkick gem來處理我的Rails應用程序中的搜索。我目前在做:在Rails中優化Searchkick 4

class Paper < ActiveRecord::Base 
    belongs_to :report 
    belongs_to :user 
    before_destroy :delete_dependant_papers 

    searchkick word_start: [:realname] 
end 

這很好,但它不必要地索引每一列。我希望它僅索引「真實姓名」列。

然後我在Searchkick GitHub頁面遇到search_data。這使我只能索引某些列:

class Product < ActiveRecord::Base 
def search_data 
    as_json only: [:name, :active] 
    # or equivalently 
    { 
     name: name, 
     active: active 
    } 
    end 
end 

我將如何結合這兩個?那麼只有1列是用realname和word_start編制的?

+0

所以,你只想索引'realname',沒有其他的權利? – 2015-03-19 09:19:19

回答

0

search_data方法會讓你索引realname,而word_start會讓你部分地匹配你的數據。所以,你的模型需要看起來像這樣:

class Paper < ActiveRecord::Base 
    belongs_to :report 
    belongs_to :user 
    before_destroy :delete_dependant_papers 

    searchkick word_start: [:realname] 

    def search_data 
    as_json only: [:realname] 
    end 
end 

你需要改變search_data方法後調用控制檯Paper.reindex