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

时间:2018-07-27 07:55:10

标签: ruby-on-rails elasticsearch searchkick

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

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

  • number:字符串,例如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

区分大小写的搜索无效。据我了解,在索引编制过程中searchk会将所有nGrams小写...但是为什么?..

问题:

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

我的环境:rails 5.2.0,searchkick 3.1.0

1 个答案:

答案 0 :(得分:1)

this commit起,您可以执行以下操作:

Text

请确保在更新Searchkick选项后重新索引。