I haven't been able to get the :multi option to work for me using a
comma separated list of timestamps.

In my model I have:

  define_index do
    indexes :description
    indexes :name, :sortable => true
    indexes :location, :sortable => true
    has :calendar_id
    has :client_id
    has :end_at
    has :start_at
    has "#{table_name}.occurrence_cache", :as
=> :occurrence_cache, :type => :multi
    set_property :delta => true
  end

  sphinx_scope(:ts_by_calendar_id) do |id_or_ids|
    {:with => {:calendar_id => id_or_ids}}
  end

  sphinx_scope(:ts_by_created_at) do |created_at_or_range|
    {:with => {:created_at => created_at_or_range}}
  end

  sphinx_scope(:ts_by_occurrence_at) do |occurrence_at_or_range|
    {:with => {:occurrence_cache => occurrence_at_or_range}}
  end

In my controller:
stamp_range =
Time.zone.at(params[:start].to_i).to_i..Time.zone.at(params[:end].to_i).to_i
@events =
CalendarEvent.ts_by_calendar_id(@calendars.map(&:id)).ts_by_occurrence_at(stamp_range)


@events is always set to no results just an empty array.  Is there
something else I need to do so that sphinx knows to pull any events
with an occurrence in the occurrence_cache multi column based on the
provided timestamp range?

Thanks,

Jeff



On Dec 8, 2:32 am, jdutil <[email protected]> wrote:
> I was storing as YAML.
>
> Using a comma separated list is fine with me though if it
> appropriately only returns records containing a value within the time
> range.
>
> Thanks for the :multi tip I think it will do the trick.  Going to give
> it a shot.
>
> Cheers,
>
> Jeff
>
> On Dec 7, 4:21 am, Pat Allan <[email protected]> wrote:
>
>
>
>
>
>
>
> > How is the column serialised? As YAML? JSON? Ruby's marshalled objects? 
> > Something else?
>
> > Mind you, for all of those that I've listed, the answer is the same - it's 
> > not possible. However, if you're storing a list of integers (timestamps or 
> > otherwise), comma separated, then it's possible:
>
> >   has "table.all_times", :as => :all_times, :type => :multi
>
> > It's also worth trying this approach, but not sure if Thinking Sphinx will 
> > try to transform the column unnecessarily. Try it anyway, as it's the 
> > cleaner solution:
>
> >   has all_times, :type => :multi
>
> > Cheers
>
> > --
> > Pat
>
> > On 07/12/2011, at 5:25 AM, jdutil wrote:
>
> > > Is it possible to define an index on a serialized column?  How would
> > > you go about doing this?
>
> > > More specifically I would like to search a serialized Array of Time
> > > objects or Integer Timestamps.  Then only return records, which have a
> > > Time or Timestamp taking place within a certain months time range
> > > within the serialized array.
>
> > > I'm trying to find the best way to store occurrences of recurring
> > > events, and then only find the events taking place within that month.
> > > If this can be achieved with TS that's great or any other possible
> > > solutions would be nice too.
>
> > > Thanks.
>
> > > --
> > > You received this message because you are subscribed to the Google Groups 
> > > "Thinking Sphinx" group.
> > > To post to this group, send email to [email protected].
> > > To unsubscribe from this group, send email to 
> > > [email protected].
> > > For more options, visit this group 
> > > athttp://groups.google.com/group/thinking-sphinx?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Thinking Sphinx" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/thinking-sphinx?hl=en.

Reply via email to