SearchKick search_data vs searchable

时间:2018-05-04 22:24:41

标签: ruby-on-rails ruby searchkick

为了这个问题,让我们说我有两个模型:

  • Book,其中包含namecreated_atupdated_at和相关的Author模型。
  • Author,其中包含namebirthdate

出于搜索目的,我想进行两次不同的搜索:

  • Bookname
  • 搜索author.name
  • Author
  • 搜索name
  1. 如果我只将模型字段直接映射到ElasticSearch字段,那么search_data是否必要?例如,我的Author模型是否足够 只有searchkick searchable %i[name],或者我还需要:
  2. def search_data
      {
        name: name
      }
    end
    
    1. 如何在Searchkick中定义嵌套数据以搜索Book' s Author.name?目前,我会做这样的事情,但是,似乎从README的Nested Data部分可能有另一种方法来完成同样的事情。
    2. def search_data
        {
          name: name,
          author_name: author.name
        }
      end
      
      1. 如果Book 许多 Author,该怎么办?以任何作者的名字搜索图书的建议方法是什么?这样的事情是迄今为止我能想到的最好的事情:
      2. def search_data
          {
            name: name,
            author_names: author.pluck(:name)
          }
        end
        

1 个答案:

答案 0 :(得分:0)

  1. 如果仅需要模型字段,则无需定义search_data。 Searchkick自动执行此操作。您可以使用Author.first.search_data进行检查。

  2. Searchkick对嵌套数据的支持有限。您提供的示例看起来不错。

  3. 这正是对多位作者的建议。