Hi Timo

You're not the only person to hit this - someone's logged a similar issue on 
Github. To be honest, I'm a little surprised this is happening - as Sphinx 
2.0.x should be storing the class name as a string attribute (more reliable 
than the old CRC approach, where collisions could potentially happen).

Is this only happening in development? Or production? Is the model in question 
using STI and/or is there a column called 'type'?

-- 
Pat

On 25/08/2011, at 11:00 PM, Timo Virkkala wrote:

> Hi,
> 
> I found a problem (and a hackaround solution) with the global search in 
> Thinking Sphinx.
> 
> When I try to use ThinkingSphinx.search(term), I get a traceback like the 
> following:
> 
> NoMethodError: undefined method `constantize' for 0:Fixnum
>         from lib/thinking_sphinx/search.rb:936:in `class_from_crc'
>         from lib/thinking_sphinx/search.rb:915:in `instances_from_matches'
>         from lib/active_support/ordered_hash.rb:139:in `each'
>         from lib/active_support/ordered_hash.rb:139:in `each'
>         from lib/thinking_sphinx/search.rb:913:in `instances_from_matches'
>         from lib/thinking_sphinx/search.rb:436:in `compose_results'
>         [etc.]
> (I cleaned up the pathnames a bit)
> 
> My (relevant) environment:
>   * rails (3.0.9)
>   * riddle (1.4.0)
>   * thinking-sphinx (2.0.5 dc98d80)
>   * sphinx (2.0.1-beta)
> 
> I've managed to locate the problem: there are a couple of Sphinx version 
> number comparisons in ThinkingSphinx::Search, which choose what to do based 
> on the Sphinx version number. For some reason the correct actions would be 
> the ones chosen for Sphinx versions < 2, even though I'm running Sphinx 2.0.1.
> 
> I can get the search to run correctly with the following monkey-patch:
> class ThinkingSphinx::Search
>  def class_from_crc(crc)
>   # if Riddle.loaded_version.to_i < 2
>    config.models_by_crc[crc].constantize
>   # else
>   #  crc.constantize
>   # end
>  end
>  def crc_attribute
>   # Riddle.loaded_version.to_i < 2 ? 'class_crc' : 'sphinx_internal_class'
>   'class_crc'
>  end
> end
> 
> Does anybody have an idea of why this is? Does Thinking Sphinx make incorrect 
> assumptions about the column names returned by sphinx, or do I have a 
> configuration error somewhere?
> 
> - Timo Virkkala
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Thinking Sphinx" group.
> To view this discussion on the web visit 
> https://groups.google.com/d/msg/thinking-sphinx/-/g5JBaJp8TV4J.
> 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