我有一个Event模型和一个EventDate模型。
事件has_many:event_dates和EventDate belongs_to:event
我尝试设置太阳黑子Solr搜索,以便它只返回事件日期为未来的事件。
我想我在事件模型中正确设置了这个:
searchable do
text :headline, :info
text :event_dates do
event_dates.map(&:event_date).compact.join(" ")
end
end
但在我的搜索控制器中,我遇到了这个问题:
class SearchController < ApplicationController
def search
@search = Sunspot.search [Event, Venue] do
fulltext params[:search]
any_of do
all_of do
with(:class, Event)
with(:event_date).greater_than(Time.zone.now)
end
all_of do
with(:class, Venue)
end
end
end
@results = @search.results
respond_to do |format|
format.json { render json: @results }
end
end
end
行with(:event_date).greater_than(Time.zone.now)
产生错误:Sunspot::UnrecognizedFieldError (No field configured for Event, Venue with name 'event_date'):
我也尝试了复数with(:event_dates)
但产生了同样的错误。
搜索工作正常,没有with(:event_date)行,但我确实需要这样做才能使搜索符合它的目的。
有没有Sunspot Solr经验的人可以帮忙吗?
提前致谢。
哦,如果有人想知道,这是我在Venue模型中可搜索的块:
searchable do
text :name, :address_1, :address_2, :postcode
text :town do
town.town
end
end
答案 0 :(得分:1)
我最终通过修改事件模型中的可搜索块来解决这个问题:
searchable do
text :headline, :info
time :event_dates, :multiple => true do
event_dates.map(&:event_date)
end
end
更改是将event_dates上的数据类型更改为时间(一个明显的错误),但添加:multiple => true
作为事件有很多event_dates。