Hi Robert

Sorry you've had to do all this debugging on your own - but great to know 
you've found the cause.

I think this is actually a Rails/ActiveRecord bug, not a Thinking Sphinx bug 
(I've had someone raise it before) - as TS uses ActiveRecord to generate the 
joins in the sql_query.

So, I'm not sure if it's been fixed, but if you're not using 2.3.8, perhaps 
it's worth upgrading - at least temporarily - to check? Otherwise, I think 
manually editing the config and then using the ts:reindex task (to avoid config 
regeneration) is the only approach.

-- 
Pat

On 07/07/2010, at 4:02 AM, rbjarnason wrote:

> I can confirm that the problem I've been facing is that
> the :primary_key column seems to be ignored when building the
> association SQL.  I have a good reason for using both id and uid
> columns but in my test rig they have similar values causing this
> unexpected behaviour.
> 
> or this definition:
> 
> belongs_to :project, :primary_key=>"uid", :foreign_key=>"project_uid"
> 
> This is generated:
> LEFT OUTER JOIN `projects` ON `projects`.id =
> `project_documents`.project_uid
> 
> Instead of:
> LEFT OUTER JOIN `projects` ON `projects`.uid =
> `project_documents`.project_uid
> 
> I can edit the config by hand, but is there any easy way around this
> in the code?
> 
> Warm regards,
> Robert
> 
> On Jul 6, 7:37 pm, rbjarnason <[email protected]> wrote:
>> Hi,
>> 
>> I think I've found the problem, its due to the construction of the SQL
>> query, I'm using :primary_key and :foreign_key in the association and
>> those don't seem to be picked up correctly in all places.
>> 
>> Will post more detail later when I've confirmed that this is the
>> problem.
>> 
>> Warm regards,
>> Robert
>> 
>> On Jul 6, 6:22 pm, rbjarnason <[email protected]> wrote:
>> 
>> 
>> 
>>> Hi,
>> 
>>> I'm still trying to work out this problem.
>> 
>>> I've added debug traces all over, and I have found something
>>> interesting in the method add_from_results in facet_search.rb
>> 
>>> After: "results.each_with_groupby_and_count { |result, group, count|"
>>> I do:
>>> RAILS_DEFAULT_LOGGER.debug("TS: facet_value #{facet_value} result
>>> #{result} group #{group} count #{count}")
>> 
>>> For the two Facets that do not show up as expected when searching the
>>> group value is 0 while the count is 39 is both places.  The group
>>> value has a large number for all the working Facets.
>> 
>>> Any idea what a group value of 0 could signify in this context?
>> 
>>> I also confirmed that the Facet search is converting the name of the
>>> product to a crc32 value to do the Facet.for search and that all looks
>>> normal compared to the Facet.for that work.
>> 
>>> Warm regards,
>>> Robert
>> 
>>> On Jun 30, 4:40 pm, rbjarnason <[email protected]> wrote:
>> 
>>>> Hi,
>> 
>>>> I've got a strange problem when using Facets.  It reports one facet
>>>> result having, in this example, 39 items but when I use @facets.for it
>>>> returns an empty array.  There are about 20 other facets reported in
>>>> this category and they all work as expected with @facets.for, its only
>>>> the facet that has the largest number reported that does not return
>>>> anything.  I can see the items that fit into the category in the main
>>>> search results list so the data is there.
>> 
>>>> Here is the code I use:
>>>> @facets = ThinkingSphinx.facets params[:search], :all_facets =>
>>>> true, :class_facet => false, :page => params[:page], :order
>>>> => :created_at,  :sort_mode
>>>> => :desc, :with=>{:search_access_tag=>@search_access_tags << 0}
>> 
>>>> And the html:
>>>> <% @facets.each do |facet, facet_options| %>
>>>> <h3><%= facet.to_s[0..facet.to_s.length-6].humanize.titleize.pluralize
>>>> %></h3>
>>>> <ul>
>>>>         <% facet_options.each do |option, count| %>
>>>>                 <% next if option==nil or option=="" %>
>>>>                 <li><%= link_to "#{option} (#{count})", :params => {facet 
>>>> =>
>>>> option, :search=>params[:search], :page => 1} %></li>
>>>>         <% end %>
>>>> </ul>
>>>> <% end %>
>> 
>>>> And then when you click on one of the links it takes you to
>>>> if params[:project_category_name]
>>>>     @search_results =
>>>> @facets.for(:project_category_name=>params[:project_category_name].to_s)
>>>> end
>> 
>>>> What is the best approach in debugging this inconsistency in what is
>>>> reported from the main facets call and the @facets.for returns?  Are
>>>> there any known issues when using :all_facets?
>> 
>>>> Warm regards,
>>>> Robert
> 
> -- 
> 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.

Reply via email to