我正在使用 elasticsearch-rails 和 elasticsearch-model gem 在我的 rails 应用程序中搜索产品。
我想让我的搜索不区分大小写,并且必须独立于复数形式。我在谷歌上进行了很多研究,但对如何使用分析器进行了预感,但没有成功。所以我不得不发布一个新问题。
这是我要搜索的产品模型
class Product < ActiveRecord::Base
include Elasticsearch::Model
include Elasticsearch::Model::Callbacks
belongs_to :category
belongs_to :sub_category
has_many :variations
settings index: { number_of_shards: 1 } do
mappings dynamic: 'false' do
indexes :name, analyzer: 'snowball'
indexes :description, analyzer: 'snowball'
indexes :category, analyzer: 'snowball'
end
end
def as_indexed_json(options={})
as_json(only: [:name, :description, :brand, :color, :make, :style, :gender],
include: { category: { only: :name}, sub_category: {only: :name}}
)
end
def self.search(query)
__elasticsearch__.search({
query: { query_string: {
query: query,
default_operator: "AND"
}},
})
end
end
- 我的问题是如何在不考虑复数的情况下进行搜索?
- T恤,T恤,T恤都应该匹配。
最重要的是,我从未找到对下面给出的以下块的任何解释
settings index: { number_of_shards: 1 } do
mappings dynamic: 'false' do
indexes :name, analyzer: 'snowball', index_options: 'offsets'
indexes :description, analyzer: 'snowball'
indexes :category, analyzer: 'snowball'
end
end
这个块用于搜索的确切目的是什么。
映射动态:“假”是什么意思?
index :name, analyzer: 'snowball', index_options: 'offsets' 是什么意思?
可以在此块中添加哪些其他选项并稍加解释将对我有很大帮助。
任何进一步研究的链接也很有帮助。
谢谢