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.
