Hi Keith
Unfortunately, Sphinx has no concept of arrays of floats, so this will not work.
What you'll need to do is to have an index on Location instead, and group by
thing_id:
define_index do
# you need at least one field.
indexes thing.name, :as => :thing
has lat, lng, thing_id
end
Location.search 'foo',
:geo => [lat, lng],
:group_by => 'thing_id',
:group_function => :attr
You can add :group_clause to manage how the search results are sorted - the
normal sorting applies within each group (ie: which location for the matching
thing_id is returned).
http://freelancing-god.github.com/ts/en/searching.html#grouping
This will ensure you only have one result per thing.
Cheers
--
Pat
On 13/07/2010, at 1:42 AM, Keith wrote:
> Say I have something like this:
>
> class Thing < ActiveRecord::Base
> has_many :locations
>
> define_index do
> has 'locations.lat', :as => :latitude
> has 'locations.lng', :as => :longitude
> end
>
> end
>
> class Location < ActiveRecord::Base
> acts_as_mappable
> belongs_to :thing
> end
>
> Would a has_many on locations ever be able to be correctly indexed/
> queried across? What would the right approach for this be? 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 at
> http://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.