elasticsearch,searchkick,Ruby On Rails,elasticsearch,Searchkick" /> elasticsearch,searchkick,Ruby On Rails,elasticsearch,Searchkick" />

Ruby on rails 如何使用searchkick设置word_中区分大小写的搜索?

Ruby on rails 如何使用searchkick设置word_中区分大小写的搜索?,ruby-on-rails,elasticsearch,searchkick,Ruby On Rails,elasticsearch,Searchkick,我正在尝试在Rails应用程序中设置Searchkick 我有一个带有字段的模型: 编号:字符串,例如NK4321nn1234 我需要的是: 搜索1nn1应找到NK4321nn1234 搜索1NN1不应找到NK4321nn1234 这是我的模型: class Product < ApplicationRecord searchkick word_middle: [:number] def search_data { number: number

我正在尝试在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 downcase all
nGrams
在索引过程中。。。但是为什么呢

问题:

  • 我写的搜索方法正确吗
  • 为什么敏感搜索不起作用
我的环境:rails 5.2.0、searchkick 3.1.0从开始,您可以执行以下操作:

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

更新Searchkick选项后,请务必重新编制索引。

您能否修改“我需要什么”下的内容,它似乎不正确。@Val谢谢,已修复