简体   繁体   English

如何使用searchkick设置word_middle区分大小写的搜索?

[英]How setup word_middle case-sensitive search with searchkick?

I am trying to setup Searchkick in my Rails application. 我正在尝试在我的Rails应用程序中设置Searchkick。

I have a model with fields: 我有一个模型与领域:

  • number:string eg NK4321nn1234 数字:字符串,例如NK4321nn1234

What I need: 我需要的:

  • searching for 1nn1 should find NK4321nn1234 搜索1nn1应该找到NK4321nn1234
  • searching for 1NN1 should NOT find NK4321nn1234 搜索1NN1应该找不到NK4321nn1234

Here is my model: 这是我的模型:

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

Case-sensitive search does not work. 区分大小写的搜索无效。 As far as I understand, searchkick downcase all nGrams during indexing... But why?.. 据我了解,在索引nGrams过程中searchkick将所有nGrams转换为小写...但是为什么呢?

Questions: 问题:

  • did I write search methods correct? 我写的搜索方法正确吗?
  • why sensitive search not working? 为什么敏感搜索不起作用?

My environment: rails 5.2.0, searchkick 3.1.0 我的环境:rails 5.2.0,searchkick 3.1.0

As of this commit , you can do: 该提交开始 ,您可以执行以下操作:

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

Be sure to reindex after updating Searchkick options. 确保在更新Searchkick选项后重新索引。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM