Hi Jenny
The way I'd go about this is to add the comment bodies to the post index - as
you've suggested. As for highlighting, Sphinx calls this excerpts. While not
quite as elegant for data via associations, I'd recommend doing the following:
* Create a method in your post model for the comment bodies:
def comment_bodies
comments.collect(&:body).join(' ')
end
* Access excerpts for that method:
<%= post.excerpts.comment_bodies %>
http://freelancing-god.github.com/ts/en/excerpts.html
You may want to merge the post body in with the comment bodies for that
excerpted text, unless they're going to be separate when displayed in the
search results.
And yes, it's not super performant either, but nothing better comes to mind at
the moment.
Cheers
--
Pat
On 22/12/2010, at 2:18 PM, jennyw wrote:
> Hi, everyone! Kind of new to Sphinx and Thinking Sphinx. Seems to be
> pretty great so far, though! I do have a question about
> aggregation ... For example, let's say you're creating a blog
> application and would like people to be able to search on posts. Since
> there are often insightful comments, you want the search to return
> posts whose comments match the search term, even if the posts don't.
> And you wan to highlight the search terms. The thing that's come to
> mind is to define an index like so:
>
> class Post < ActiveRecord::Base
> define_index do
> indexes subject
> indexes body
> indexes comments(:body), :as => comments_text
> end
> end
>
> Which would let us include the comments in the Post. Is there a better
> way? Such as indexing body on comments and somehow combining them in a
> query? I suspect not, but thought I'd ask. Also, I suspect that if a
> post has many long comments, we might run into some size issues
> (currently setting group_concat_max_len to 1 MB).
>
> Also, if you wanted to highlight found search terms, then ... I
> suppose there are several ways, but none of the ones I've come up with
> sound great. The simplest one (and possibly the least performant)
> would be to index body on comments and run the search against each of
> those to be able to get excerpts. Any better ideas?
>
> 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.