【问题标题】:How setup word_middle case-sensitive search with searchkick?如何使用 searchkick 设置 word_middle 区分大小写的搜索?
【发布时间】:2018-07-27 07:55:10
【问题描述】:

我正在尝试在我的 Rails 应用程序中设置 Searchkick。

我有一个带有字段的模型:

  • 数字:字符串,例如NK4321nn1234

我需要什么:

  • 搜索1nn1 应该会找到NK4321nn1234
  • 搜索1NN1 不应找到NK4321nn1234

这是我的模型:

class Product < ApplicationRecord
    searchkick word_middle: [:number]

  def search_data
    {
      number: number
    }
  end

  def self.sensitive_search query, page
    search( query,
      fields: [{number: :exact}],
      match: :word_middle,
      misspellings: false,
      page: 1,
      per_page: 15
    )
  end

  def self.insensitive_search query, page
    search( query.downcase,
      fields: [:number],
      match: :word_middle,
      misspellings: false,
      page: 1,
      per_page: 15
    )
  end
end

区分大小写的搜索不起作用。据我了解,在索引期间 searchkick 将所有nGrams 小写...但是为什么?..

问题:

  • 我写的搜索方法是否正确?
  • 为什么敏感搜索不起作用?

我的环境:rails 5.2.0,searchkick 3.1.0

【问题讨论】:

  • 你能修改一下“我需要什么”下的内容吗,好像不对。

标签: ruby-on-rails elasticsearch searchkick


【解决方案1】:

截至this commit,您可以这样做:

class Product < ApplicationRecord
  searchkick word_middle: [:number], case_sensitive: true
end

请务必在更新 Searchkick 选项后重新索引。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-15
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多