我在rails应用程序中使用ElasticSearchRails gem。一切都设置好了,但我在搜索两个单词时遇到了麻烦,两个单词之间有空格。
这是我的密码:
SEARCH_FIELDS = %w"name email"
attribute :text, type: String, default: ''
response = MyModelName.search([query, filter, sort].compact.reduce(:merge)).page(page).per(per_page)
def query
query = {}.tap do |q|
q[:query_string] = {query: text, default_operator: 'AND', fields: SEARCH_FIELDS, allow_leading_wildcard: true}
end
return {query: query}
end
def filter
filters = []
filters << {term: {user_id: user_id}}
filters << {term: {hide: (hide.nil? ? false : hide)}}
return {filter: {and: filters}}
end
如果我搜索名字的首字母缩写,比如('John'),效果很好,但是没有找到带空格的名字('johndoe')。