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 at
http://groups.google.com/group/thinking-sphinx?hl=en.