Rails - 如何在searchkick中为过滤器添加更多字段?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rails - 如何在searchkick中为过滤器添加更多字段?相关的知识,希望对你有一定的参考价值。
在rails中,我使用searchkick
gem进行搜索。当我为where子句添加更多字段时,返回零结果。
实际上搜索正在使用以下方法(User.rb),
searchkick word_start: [:name]
def initialize(name, limit = User::SUGGESTION_LIMIT, page = nil)
@name = name
@limit = limit
@page = page
@per_page = limit.to_i
end
query = {
match: :word_start,
fields: [{ emails: "exact" }, "name^5"],
misspellings: { prefix_length: 2 },
load: false
}
User.search(name, query).records
当我添加像where: {active: false, inactive: true, deleted_at: nil}
这样的条件时,它不返回任何数据。
query = {
match: :word_start,
where: {active: false, inactive: true, deleted_at: nil},
fields: [{ emails: "exact"}, "name^5"],
misspellings: { prefix_length: 2 },
load: false
}
以上where
条件有任何错误吗?请帮我解决这个问题。我是第一次使用这个宝石。
答案
实际上,where
子句中使用的字段的索引方式不同。您必须将这些字段定义为filterable
:
searchkick word_start: [:name], filterable: [:active, :inactive, :deleted_at]
这应该工作。
顺便说一句:您不需要“活动”和“非活动”属性。如果“active”属性为false,则表示它处于非活动状态。
以上是关于Rails - 如何在searchkick中为过滤器添加更多字段?的主要内容,如果未能解决你的问题,请参考以下文章
在 Rails 中循环遍历 form.select(使用 Elastic Search/Searchkick aggs)
在 Rails 4.1 中使用 Searchkick gem 在 Elasticsearch 中设置 Facets
ruby 在Heroku上使用Rails&searchkick gem安全地使用Amazon Elasticsearch(签名请求)。