【问题标题】:Search Kick Rails 5搜索踢铁轨 5
【发布时间】:2018-08-23 06:53:34
【问题描述】:

快速的。

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

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

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

这是我想念的简单东西吗?我想添加

searchkick 继承:true

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

有什么想法吗?谢谢。

【问题讨论】:

    标签: ruby-on-rails elasticsearch searchkick


    【解决方案1】:

    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。有关详细信息,请参阅文档。

    【讨论】:

    • 看准钱。感谢一百万@bkimble
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    • 2016-08-18
    • 2015-12-28
    • 2016-09-25
    相关资源
    最近更新 更多