我通过elasticsearch-rails gem在我的Rails 4应用程序中进行了以下设置。如果我在描述字段中搜索诸如“上诉”之类的技术术语(可能会重复多次),我会收回搜索结果。但是,如果我搜索一个名字,无论是第一个,最后一个,还是第一个和最后一个,我似乎什么也得不到。我应该为字符串类型字段做些什么吗? (请记住,描述是Rails中的文本字段,名字和姓氏是Rails中的字符串字段)请记住,诸如“John”之类的名字只出现在名字字段中(姓氏与此类似) ,我想知道这是否是问题的一部分?
class Trial < ActiveRecord::Base
include ActiveModel::Serialization
include Elasticsearch::Model
include Elasticsearch::Model::Callbacks
index_name [Rails.env, model_name.collection.gsub(/\//, '-')].join('_')
settings index: { number_of_shards: 2 } do
mappings dynamic: 'false' do
indexes :first_name, analyzer: 'english', index_options: 'offsets', copy_to: 'full_name'
indexes :last_name, analyzer: 'english', index_options: 'offsets', copy_to: 'full_name'
indexes :email, analyzer: 'english', index_options: 'offsets'
indexes :description, analyzer: 'english', index_options: 'offsets'
indexes :full_name, analyzer: 'english', index_options: 'offsets'
end
end
def self.search_trials(search_terms)
response = ClinicalTrial.search(
size: 20,
query: {
multi_match: {
"query" => search_terms,
"type" => "cross_fields",
"fields" => "_all"
}
}
)
response.records
end
end