在我的Rails应用程序中,我使用ES和Searchkick来处理搜索。我目前正在做:
class Paper < ActiveRecord::Base
belongs_to :report
belongs_to :user
before_destroy :delete_dependant_papers
searchkick word_start: [:realname]
end这是很好的工作,但它不必要地索引每一列。我希望它只索引"realname“列。
然后,我在search_data页面中看到了搜索踢GitHub。这允许我只对某些列进行索引:
class Product < ActiveRecord::Base
def search_data
as_json only: [:name, :active]
# or equivalently
{
name: name,
active: active
}
end
end我怎么把这两者结合起来呢?所以只有一个列是用realname和word_start索引的?
发布于 2015-03-19 09:24:27
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在更改Paper.reindex方法后,需要在控制台中调用search_data。
https://stackoverflow.com/questions/29137895
复制相似问题