Thank you very much Pat,

Yes, it is a real pain trying to search on Post itself. And I've taken
your solution, to perform search on Descriptions instead. The drawback
is that I had to put redundant Post information in the Descriptions
table (to avoid association and its string attributes issues).

Hope there will be a complete solution to those matters in Thinking
Sphinx

Cheers,
Nghi

On Apr 23, 2:58 pm, Pat Allan <[email protected]> wrote:
> Sorry for the slow response... there's a couple of issues with your approach.
>
> Firstly, using strings for attributes - though there's ways around 
> this.http://freelancing-god.github.com/ts/en/common_issues.html#string_fil...
>
> Secondly, you're expecting Sphinx to have some sense of key/value pairs, and 
> it doesn't. EN and FR get put together, and the descriptions get merged 
> together. This is a far more complex issue if you want to keep search on the 
> Post, but if you switch to Description (and pull in post info via an 
> association), then normal string filtering issue becomes the thing to deal 
> with again. This is the approach I'd take, but obviously I don't have my head 
> around your app :)
>
> Cheers
>
> --
> Pat
>
> On 14/04/2010, at 8:04 PM, minhnghivn wrote:
>
>
>
> > Sorry if this is already posted elsewhere in the group but I've
> > searched the mail group and found no solution to my situation with
> > has_many association in Thinking Sphinx.
>
> > Suppose a Post has many descriptions in many languages. I create two
> > table posts and descriptions
>
> > posts (id, title)
> > descriptions(post_id, lang, description)
>
> > posts table:
> > post_id   |    title
> > -----------------------------------
> > 1            |   Post One
>
> > descriptions table
>
> > post_id |  lang  |   description
> > -------------------------------------------
> > 1          | "EN"  |   this is the first line - in English
> > 1          | "FR"  |   this is the second line - in French
>
> > I want to search for "any post whose EN description contains "first"
> > ". So
> > I perform a query like this:
>
> > Post.search "first", :with => {:language_ids => "EN"}  # this works,
> > returned the Post One
>
> > but, amazingly, if I do:
>
> > Post.search "first", :with => {:language_ids => "FR"}
>
> > Again, it returns the Post One while I have thought it should return
> > nothing!!!
>
> > Any one can explain why?
>
> > class Post < ActiveRecord::Base
> >  has_many :descriptions
>
> >  define_index do
> >    indexes post_id, title
> >    indexes descriptions.language_id, :as => :language_ids
> >  end
> > end
>
> > --
> > 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 
> 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