Hi Pat,

That did the trick.  Thanks again.

s.park

On May 25, 4:52 pm, Pat Allan <[email protected]> wrote:
> Try the following:
>   indexes tag_taggings.tag.name, :as => :tags
>   indexes category_taggings.tag.name, :as => :categories
>
> That said, your first attempt should ideally work - I'll investigate further. 
> I'm guessing it's a problem with the fact that it's joining on AATO::Tag 
> instead of AATO::Tagging.
>
> --
> Pat
>
> On 25/05/2011, at 10:05 PM, sparky wrote:
>
>
>
>
>
>
>
> > Hi Pat,
>
> > I just did a bundle update and tried with the rails3 branch but am
> > still experiencing the problem.
>
> > In looking at the commit history, I see that the place you made a fix
> > was in the association.rb class in the rewrite_conditions method.
>
> > In the case I'm using, there are no explicit join conditions in the
> > join and no rewrite happens.
>
> > I'm using the ActsAsTaggableOn v 2.0.6 and the join options only has
> > the following key/value pairs
>
> > class_name = ActsAsTaggableOn::Tag
> > through = tag_taggings
> > source = tag
>
> > and in the define_index portion of my class I have the following:
>
> > define_index do
> >    indexes tags.name, :as => :tags
> >    indexes categories.name, :as => :categories
> > end
>
> > Can you let me know how you've defined the index and what version of
> > acts-as-taggable-on you're using?  I will continue to track down the
> > issue here.
>
> > s.park
>
> > On May 25, 1:58 pm, sparky <[email protected]> wrote:
> >> Thanks Pat!
>
> >> On May 25, 5:56 am, Pat Allan <[email protected]> wrote:
>
> >>> Figured out and fixed it - the fault is with acts-as-taggable-on, as it 
> >>> has explicit conditions for the joins that don't allow for join aliases. 
> >>> TS now checks for these (only if you're using acts-as-taggable-on), and 
> >>> replaces them appropriately.
>
> >>> Fix is in both master and rails3 branches, will hopefully have gem 
> >>> releases out soon.
>
> >>> --
> >>> Pat
>
> >>> On 24/05/2011, at 3:05 PM, sparky wrote:
>
> >>>> Thanks Pat, please let me know if there's any info I can provide to
> >>>> help.  I'm digging through the code to see if I can come up with a
> >>>> patch so any thoughts on where to start poking around would help me
> >>>> out.
>
> >>>> Thanks again.
>
> >>>> s.park
>
> >>>> On May 24, 12:23 am, Pat Allan <[email protected]> wrote:
> >>>>> Someone else raised this issue just the other day as well. I'll 
> >>>>> hopefully have some time to create a test app and give it a spin soon, 
> >>>>> see if I can figure out what's causing the problems.
>
> >>>>> --
> >>>>> Pat
>
> >>>>> On 24/05/2011, at 2:46 AM, sparky wrote:
>
> >>>>>> I have a model that has acts_as_taggable in 2 contexts
>
> >>>>>> class Asset < ActiveRecord::Base
> >>>>>>  acts_as_taggable
> >>>>>>  acts_as_taggable_on :categories
>
> >>>>>> ...
> >>>>>> end
>
> >>>>>> Basically, I want to maintain a list of tags for the Asset as well as
> >>>>>> a list of catergories.  Both of which I'd like to index.
>
> >>>>>> When I define the indices,
>
> >>>>>> I tried
>
> >>>>>> define_index do
> >>>>>>    indexes tags.name, :as => :categories
> >>>>>>    indexes categories.name, :as => :tags
> >>>>>>  ....
> >>>>>> end
>
> >>>>>> which generates the following sql..... (relevant snippets shown)
> >>>>>> sql_query = SELECT ...
> >>>>>> GROUP_CONCAT(DISTINCT IFNULL(`tags`.`name`, '0') SEPARATOR ' ') AS
> >>>>>> `categories`,
> >>>>>> GROUP_CONCAT(DISTINCT IFNULL(`categories_assets`.`name`, '0')
> >>>>>> SEPARATOR ' ') AS `tags`
> >>>>>> ....
> >>>>>> FROM `assets`
> >>>>>> LEFT OUTER JOIN `taggings` ON `assets`.`id` = `taggings`.`taggable_id`
> >>>>>> AND `taggings`.`taggable_type` = 'Asset'
> >>>>>> LEFT OUTER JOIN `tags` ON taggings.tagger_id IS NULL AND
> >>>>>> taggings.context = 'tags'
> >>>>>> LEFT OUTER JOIN `taggings` `categories_assets_join` ON `assets`.`id` =
> >>>>>> `categories_assets_join`.`taggable_id` AND
> >>>>>> `categories_assets_join`.`taggable_type` = 'Asset' LEFT OUTER JOIN
> >>>>>> `tags` `categories_assets` ON taggings.tagger_id IS NULL AND
> >>>>>> taggings.context = 'categories'
>
> >>>>>> The problem is here 2 fold it looks like.  In the joins, it joins on
> >>>>>> the tagging tables twice,  and in the join to the actual tags table,
> >>>>>> it doesn't specify the tag.id so I get a massively cartesian query
> >>>>>> that takes forever to run and indexes the wrong data.
>
> >>>>>> What I think the from clause should look like is more like
>
> >>>>>> LEFT OUTER JOIN `taggings` ON `assets`.`id` =
> >>>>>> `taggings`.`taggable_id` AND `taggings`.`taggable_type` = 'Asset'
> >>>>>> LEFT OUTER JOIN `tags` category_tags ON taggings.context =
> >>>>>> 'categories' and taggings.tag_id = category_tags.id
> >>>>>> LEFT OUTER JOIN `tags` tag_tags ON taggings.context = 'tags' and
> >>>>>> taggings.tag_id = tag_tags.id
>
> >>>>>> So my question is the following.  What's the best way to fix the
> >>>>>> indexing query?  Should I try and figure out how the sql is being
> >>>>>> generated and submit a patch?  Should i disabled the ts:config and
> >>>>>> handwrite the config or have I missed a way to pass in my own indexing
> >>>>>> query into sphinx.yml so that I can free regenerate the config file
> >>>>>> but use my query.
>
> >>>>>> Thanks in advance for any help.
>
> >>>>>> s.park
>
> >>>>>> --
> >>>>>> 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 
> > 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