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中为过滤器添加更多字段?的主要内容,如果未能解决你的问题,请参考以下文章

在 pyspark 中为过滤后的数据帧调用函数

在 Rails 中循环遍历 form.select(使用 Elastic Search/Searchkick aggs)

在 Rails 4.1 中使用 Searchkick gem 在 Elasticsearch 中设置 Facets

php cpt同位素循环 - 将术语附加为过滤类

ruby 在Heroku上使用Rails&searchkick gem安全地使用Amazon Elasticsearch(签名请求)。

SQLServer -------- where 子句的另一种用法,以值为搜索条件,字段为过滤条件