【发布时间】:2018-05-04 22:24:40
【问题描述】:
为了这个问题,假设我有两个模型:
-
Book,它有一个name、created_at、updated_at和一个关联的Author模型。 -
Author,其中有一个name和birthdate。
出于搜索的目的,我想进行两个不同的搜索:
- 通过
name或author.name搜索Books - 通过
name搜索Authors
- 如果我只有模型字段到 ElasticSearch 字段的直接映射,是否需要
search_data?例如,在我的Author模型上仅 有searchkick searchable %i[name]是否足够,或者我还需要:
def search_data
{
name: name
}
end
- 如何在 Searchkick 中定义嵌套数据以搜索
Book的Author.name?目前,我会做这样的事情,但是,从 README 的 Nested Data 部分看来,可能还有另一种方法可以完成同样的事情。
def search_data
{
name: name,
author_name: author.name
}
end
- 如果
Book有很多Authors 怎么办?按作者姓名搜索一本书的建议方法是什么?到目前为止,我能想到的最好的方法是这样的:
def search_data
{
name: name,
author_names: author.pluck(:name)
}
end
【问题讨论】:
标签: ruby-on-rails ruby searchkick