mak*_*app 2 ruby-on-rails-4 searchkick
我正在使用 searchkick 和 rails4。
我有一个 activerecord People,属性为 a、b、c。仅当 b 等于“type1”时如何进行索引,否则不进行索引?
目前我所知道的是
def search_data
{
a:a,
b:b,
c:c,
}
end
Run Code Online (Sandbox Code Playgroud)
小智 5
有点晚了,但今天早些时候一位队友提出了这个问题,我认为这个话题值得更详细的回答。
据我所知,您有两个选项可以控制 searchkick 索引哪些记录:
在类级别,您可以通过定义 ActiveRecord 范围来限制记录搜索索引search_import。这个范围本质上是在一次索引多个记录时使用,比如在运行searchkick:reindex任务时。
在实例级别,您可以定义一个should_index?方法,该方法在索引之前在每条记录上调用,它确定是否应从索引中添加或删除记录。
因此,如果您只想索引具有bequals 的记录,'type1'您可以执行以下操作:
class People < ApplicationRecord
scope :search_import, -> { where(b: 'type1') }
def should_index?
b == 'type1'
end
end
Run Code Online (Sandbox Code Playgroud)
请注意,返回falsefromshould_import?将从索引中删除记录,您可以在此处阅读。