SearchKick search_data 与可搜索
SearchKick search_data vs searchable
为了这个问题,假设我有两个模型:
Book
,它有一个 name
、created_at
、updated_at
和一个关联的 Author
模型。
Author
,其中有一个 name
和 birthdate
.
出于搜索目的,我想进行两次不同的搜索:
- 按
name
或 author.name
搜索 Book
- 按
name
搜索 Author
- 如果我只有模型字段到 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
有 多个 Author
怎么办?按任何作者姓名搜索书籍的建议方法是什么?像这样的东西是迄今为止我能想到的最好的东西:
def search_data
{
name: name,
author_names: author.pluck(:name)
}
end
如果只需要模型字段,则不需要定义search_data
。 Searchkick 会自动执行此操作。您可以使用 Author.first.search_data
.
进行检查
Searchkick 对嵌套数据的支持有限。你给的例子看起来不错。
这正是针对多位作者的建议。
为了这个问题,假设我有两个模型:
Book
,它有一个name
、created_at
、updated_at
和一个关联的Author
模型。Author
,其中有一个name
和birthdate
.
出于搜索目的,我想进行两次不同的搜索:
- 按
name
或author.name
搜索 - 按
name
搜索
Book
Author
- 如果我只有模型字段到 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
有 多个Author
怎么办?按任何作者姓名搜索书籍的建议方法是什么?像这样的东西是迄今为止我能想到的最好的东西:
def search_data
{
name: name,
author_names: author.pluck(:name)
}
end
如果只需要模型字段,则不需要定义
search_data
。 Searchkick 会自动执行此操作。您可以使用Author.first.search_data
. 进行检查
Searchkick 对嵌套数据的支持有限。你给的例子看起来不错。
这正是针对多位作者的建议。