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.