铁轨上的红宝石-Sunspot Solr协会搜索



我有一个Event模型和一个EventDate模型。

事件has_many:Event_dates和EventDate belongs_to:Event

我正在尝试建立一个Sunspot 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)行的情况下,搜索效果很好,但我真的需要这一点来实现搜索的目的。

有人能帮上忙吗?

提前谢谢。

哦,如果有人想知道的话,这是我在场馆模型中的可搜索区块:

  searchable do
    text :name, :address_1, :address_2, :postcode
    text :town do
      town.town
    end
  end

我最终通过修改事件模型中的可搜索块来自己解决这个问题:

  searchable do
   text :headline, :info
   time :event_dates, :multiple => true do 
    event_dates.map(&:event_date)
   end 
  end

将event_dates上的数据类型更改为时间(这是一个明显的错误),但也将:multiple => true添加为具有许多event_dates。

相关内容

  • 没有找到相关文章

最新更新