Hi Marcos

The issue here is that Sphinx only makes strings reliably sortable within a 
given index - and there's an index per model. What you're trying to do would 
work reliably for floats and unsigned integers, but strings are complex.

Essentially, Sphinx grabs all the string values for a given attribute in the 
index, sorts them alphabetically, then stores the index of each string in that 
sorted array - and it's the indexes it sorts by. So, if in one index you had 
the following names:
  "Alpha"
  "Beta"
  "Gamma"

And in the other:
  "Delta"
  "Omega"
  "Zeta"

Then what Sphinx is actually storing is 1, 2 and 3 for each set - and so you'll 
get Alpha, Delta, Beta, Omega, Gamma, Zeta.

So, after all that explanation, I don't really have much in the way of 
workarounds... You could try to create a string to integer MySQL function 
(using the first few letters, perhaps?), and then call that function in a SQL 
snippet:

  has "STRTOINT(name)", :as => :name_sort, :type => :integer

But that's not particularly elegant either.

If you do figure out a way forward, I'd love to hear it.

Cheers

-- 
Pat

On 09/04/2010, at 3:23 AM, Marcos Toledo wrote:

> Hi guys,
> 
> Assuming A.search(:order => :number).map(&:number) returns [1, 2, 3]
> and B.search(:order => :number).map(&:number) returns [4, 5, 6], I
> just noticed that ThinkingSphinx.search(:classes => [A, B], :order
> => :number).map(&:number) returns [1, 4, 2, 5, 3, 6].
> 
> I wanted the result to be [1, 2, 3, 4, 5, 6] (that means, an
> aggregated result and not interpolation of singular results).
> 
> Follows call on real modules on the following gist in case you want to
> take a look: https://gist.github.com/4a3ff29d79cf12f13ceb
> 
> Any clues, suggestions or discussions are deeply appreciated.
> 
> Thanks,
> Marcos
> 
> -- 
> 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