Xavi,

I'm doing something very similar, and it took me some trial and error
to figure it out as well.  I think you need the group_function
parameter, but it needs to describe the type of grouping you want, not
the field.  Try this:

@posts = Post.search params[:q], :group_by
=> :related_topic_id, :group_function => :attr

Hopefully that will give you what you're looking for.  If so, you'll
have to decide which match you want in the case where there are
multiple posts with the same topic ID.  For that you'll need a
combination of the :order and :group_clause params.  I found it a
little confusing - it seems that :order will control which of your
grouped items is used, and :group_clause becomes the overall sort for
all your results.

Good luck,

- Josh

On Feb 19, 4:37 am, Xavi Arnaus <[email protected]> wrote:
> Hi all
>
> I'm trying to implement a searching with grouped results as follows:
>
> It is a one-to-many relation between Topics and Posts, where each
> Topic has the title and many Posts, which each one has its own text.
>
> I'm trying to make the search by Posts so in the results page I can
> point to the Topic but placing the navigator to the Post where the
> match appears. Everything works fine until here:
>
> in the Post model:
>
> belongs_to :topic
> define_index do
>     # fields
>     indexes topic.title, :as => :related_topic_title
>     indexes text
>     indexes created_at, :sorteable => true
>
>     # attributes
>     has created_at
>     has topic(:id), :as => :related_topic_id       # field is topic_id
> in Posts
>   end
>
> in the controller, within the search action:
>
> @posts = Post.search params[:q]
>
> Ok, now the problem:
> If in a Topic there's more than one Post where there is a match, I
> recieve (obviously) all the posts. But as I want to show the results
> by Topic, I need to group all posts by Topic. I tried a lot of
> combinations:
>
> @posts = Post.search params[:q], :group_by => :related_topic_id
> [ERROR: undefined method 'bytesize' for symbol]
> @posts = Post.search params[:q], :group_funcion => :related_topic_id
> [ERROR: can't convert nil to Integer]
> @posts = Post.search params[:q], :group_by => 'topic_id' [FAILS: no
> matches!!]
> @posts = Post.search params[:q], :group_funcion
> => :related_topic_id, :group_clause => "created_at DESC" [FAILS: no
> grouping is done]
>
> So, as documentation is a little poor in grouping, can anyone help me
> on this? How can I group all Posts in a Topic? Ideally, pointing to
> the first Post of that matches in a Topic is enough...
>
> Keep in mind I'm a newbe on Sphinx
> Thank you for your time.
--~--~---------~--~----~------------~-------~--~----~
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