我使用elasticsearch-rails和elasticsearch-model gem在我的rails应用中搜索单词。
我想让我的搜索案例不敏感,并且必须独立于复数化。我在google上进行了很多研究,但是如何使用分析器而不是成功就预感到如何做到这一点。所以我不得不发一个新问题。
这是我想要搜索的模型
require 'elasticsearch/model'
class Article < ActiveRecord::Base
include Elasticsearch::Model
include Elasticsearch::Model::Callbacks
settings index: { number_of_shards: 1 } do
mappings dynamic: 'false' do
indexes :title, analyzer: 'english', index_options: 'offsets'
indexes :text, analyzer: 'english'
end
end
def self.search(query)
__elasticsearch__.search(
{
query: {
multi_match: {
query: query,
fields: ['title^10', 'text']
}
},
highlight: {
pre_tags: ['<em>'],
post_tags: ['</em>'],
fields: {
title: {},
text: {}
}
}
}
)
end
end
# Delete the previous articles index in Elasticsearch
Article.__elasticsearch__.client.indices.delete index: Article.index_name rescue nil
# Create the new index with the new mapping
Article.__elasticsearch__.client.indices.create \
index: Article.index_name,
body: { settings: Article.settings.to_hash, mappings: Article.mappings.to_hash }
# Index all article records from the DB to Elasticsearch
Article.import
#Article.import force: true
我的问题是如何搜索单词? T恤,T恤,T恤都应该搭配。 任何进一步研究的链接也很有帮助。 谢谢
答案 0 :(得分:0)
在表格中搜索的方法之一是:
User.where("firstname ILIKE ? OR lastname ILIKE ?", "%#{params[q]}%", "%#{params[q]}%" );
,其中
User is Model
params[q] is search query parameter.