搜索踢 Rails 5

Search Kick Rails 5

快点。

我正在使用 Searchkick gem 在我的 Rails 应用程序中进行搜索。我注意到如果我尝试在 Post 模型中搜索一些文本,它工作正常。

但是一切都设置正确,假设我想搜索 Post 的作者。它的示例关系是 Post.user.name

当我搜索 "users name" 时,我没有得到任何结果。我怀疑这与用户模型中的数据有关,而不是 Post 模型中的数据,但在我的 Post 视图中,我可以将其视为一个字符串。

我缺少的是简单的东西吗?我想添加

searchkick 继承:true

到我的 Post 模型并重新索引 Post 和 User 模型然后它会工作但没有任何改变。

有什么想法吗?谢谢。

Searchkick 由 ElasticSearch 提供支持。所有的搜索都在那里进行——而不是你的数据库。您需要以某种方式将要搜索的数据获取到 ElasticSearch。 Searchkick 通过使用 search_data 方法 (https://github.com/ankane/searchkick#indexing) 为您的数据编制索引来提供此功能。因此,如果您有一个关联,其中包含您想要搜索的字段,您可以按照类似于 Searchkick 的 Github 页面上的示例进行操作,并执行(针对您的情况):

class Post

  belongs_to :author, class_name: 'User' # or whatever your association is

  def search_data
    {
       title: title,
       author_name: author.name
    }
  end
end

之后不要忘记重建索引,这样您就可以看到结果了。

Post.reindex

不要忘记,如果您协会的数据发生变化,例如您的作者姓名从 Bob 变为 Robert,则数据不会自动同步。您需要手动调用 Post.reindex,或在 Author 上设置一个 after_commit 挂钩,当作者更改时调用重新索引 Post。有关详细信息,请参阅文档。