代码之家  ›  专栏  ›  技术社区  ›  bmalets TerryS

如何使用searchkick设置word_中间大小写敏感搜索?

  •  0
  • bmalets TerryS  · 技术社区  · 6 年前

    我正试图在我的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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Andrew Kane    6 年前

    截至 this commit ,您可以:

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

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