如何使用 searchkick 设置 word_middle 区分大小写的搜索?
How setup word_middle case-sensitive search with searchkick?
我正在尝试在我的 Rails 应用程序中设置 Searchkick。
我有一个带有字段的模型:
- number:string 例如
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
during indexing...但为什么呢?..
问题:
- 我写的搜索方法是否正确?
- 为什么敏感搜索不起作用?
我的环境:rails5.2.0,searchkick 3.1.0
自 this commit 起,您可以:
class Product < ApplicationRecord
searchkick word_middle: [:number], case_sensitive: true
end
请务必在更新 Searchkick 选项后重新编制索引。
我正在尝试在我的 Rails 应用程序中设置 Searchkick。
我有一个带有字段的模型:
- number:string 例如
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
during indexing...但为什么呢?..
问题:
- 我写的搜索方法是否正确?
- 为什么敏感搜索不起作用?
我的环境:rails5.2.0,searchkick 3.1.0
自 this commit 起,您可以:
class Product < ApplicationRecord
searchkick word_middle: [:number], case_sensitive: true
end
请务必在更新 Searchkick 选项后重新编制索引。