可以在数组内搜索太阳黑子吗?

hyp*_*jas 5 ruby solr sunspot ruby-on-rails-3

我有一个带有数组字段的下一个模型:

Class Invitation
 include Mongoid::Document
 include Mongoid::Timestamps::Created
 include Sunspot::Mongo

 field :recipients, :type => Array
 attr_accessible :recipients

 searchable do
  text :recipients do
  recipients.map { |recipient| recipient }
  end
 end

end
Run Code Online (Sandbox Code Playgroud)

我在我的控制器中:

def recipients

 @invitation = Invitation.find(params[:id])
 @search = Invitation.search do |s|
 s.fulltext params[:search]
 s.with(:recipients, @invitation.recipients)
 end

@recipients = @search.results
  respond_to do |format|
   format.html
  end

end
Run Code Online (Sandbox Code Playgroud)

这当我重新索引不显示错误但是:

这不适合我.我在日志中得到了下一个错误:

Sunspot :: UnrecognizedFieldError(没有为名为'recipients'的邀请配置字段):

我也试过了:

string :recipients do
  recipients.map { |recipient| recipient }
end
Run Code Online (Sandbox Code Playgroud)

但是当我重新索引时,我得到了下一个错误:

recipients is not a multiple-value field, so it cannot index values []
Run Code Online (Sandbox Code Playgroud)

我能解决这个问题吗?

小智 7

Invitation模型has_manyrecipients.这意味着invitation可以有多个recipients.

所以,试试这个:

string :recipients, :multiple => true do
  recipients.map { |recipient| recipient }
end
Run Code Online (Sandbox Code Playgroud)