使用elasticsearch rails搜索人名的最佳方法是什么?

时间:2014-10-09 03:17:46

标签: ruby-on-rails elasticsearch

我通过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

0 个答案:

没有答案