Awesome, wasn't sure if manually setting the type would do the trick,  
but good to see it does :)

-- 
Pat

On 04/06/2009, at 5:57 PM, j0llyr0g3r wrote:

>
> Pat, you're a genius!
>
> I defined my indexes now like this:
>
>  has category.category_translations.name, :as
> => :category_name, :type => :string
>
> and voila, it's working....:-)
>
> Thanks a ton......
>
> On Jun 4, 11:10 pm, Pat Allan <[email protected]> wrote:
>> Indeed, we don't want an array, we want a number (much like
>> title_sort). And it clarifies the issue: You're trying to sort on  
>> what
>> could (possibly) be a collection of strings. Can you put your
>> development.sphinx.conf file (without database passwords) onto gist  
>> or
>> pastie, so I can check something?
>>
>> Also, something that may *possibly* fix it:
>>
>>    has category.category_translations.name,
>>      :as => :category_name,
>>      :type => :string
>>
>> Cheers
>>
>> --
>> Pat
>>
>> On 04/06/2009, at 5:05 PM, j0llyr0g3r wrote:
>>
>>
>>
>>> Ah, ok, we're getting closer...:-)
>>
>>>>> Track.search('beat impelling', :order => 'category_name
>>>>> ASC').results[:matches]
>>
>>> gives me:
>>
>>> => [{:doc=>1, :attributes=>{"beat"=>1, "exact_speed"=>130,
>>> "vocals"=>0, "category_name"=>[], "sphinx_deleted"=>0,  
>>> "theme_name"=>
>>> [], "subclass_crcs"=>[388159394], "is_loop"=>1, "title_sort"=>26,
>>> "class_crc"=>388159394,
>>> "sphinx_internal_id"=>1}, :weight=>20, :index=>0},
>>> {:doc=>2, :attributes=>{"beat"=>1, "exact_speed"=>104, "vocals"=>0,
>>> "category_name"=>[], "sphinx_deleted"=>0, "theme_name"=>[],
>>> "subclass_crcs"=>[388159394], "is_loop"=>0, "title_sort"=>35,
>>> "class_crc"=>388159394,
>>> "sphinx_internal_id"=>2}, :weight=>20, :index=>1},
>>> {:doc=>13, :attributes=>{"beat"=>1, "exact_speed"=>90, "vocals"=>0,
>>> "category_name"=>[], "sphinx_deleted"=>0, "theme_name"=>[],
>>> "subclass_crcs"=>[388159394], "is_loop"=>1, "title_sort"=>16,
>>> "class_crc"=>388159394,
>>> "sphinx_internal_id"=>13}, :weight=>20, :index=>2},
>>> {:doc=>15, :attributes=>{"beat"=>1, "exact_speed"=>125, "vocals"=>0,
>>> "category_name"=>[], "sphinx_deleted"=>0, "theme_name"=>[],
>>> "subclass_crcs"=>[388159394], "is_loop"=>0, "title_sort"=>46,
>>> "class_crc"=>388159394,
>>> "sphinx_internal_id"=>15}, :weight=>20, :index=>3},
>>> {:doc=>18, :attributes=>{"beat"=>1, "exact_speed"=>120, "vocals"=>0,
>>> "category_name"=>[], "sphinx_deleted"=>0, "theme_name"=>[],
>>> "subclass_crcs"=>[388159394], "is_loop"=>0, "title_sort"=>37,
>>> "class_crc"=>388159394,
>>> "sphinx_internal_id"=>18}, :weight=>20, :index=>4},
>>> {:doc=>20, :attributes=>{"beat"=>1, "exact_speed"=>129, "vocals"=>0,
>>> "category_name"=>[], "sphinx_deleted"=>0, "theme_name"=>[],
>>> "subclass_crcs"=>[388159394], "is_loop"=>0, "title_sort"=>1,
>>> "class_crc"=>388159394,
>>> "sphinx_internal_id"=>20}, :weight=>20, :index=>5},
>>> {:doc=>22, :attributes=>{"beat"=>1, "exact_speed"=>93, "vocals"=>0,
>>> "category_name"=>[], "sphinx_deleted"=>0, "theme_name"=>[],
>>> "subclass_crcs"=>[388159394], "is_loop"=>0, "title_sort"=>9,
>>> "class_crc"=>388159394,
>>> "sphinx_internal_id"=>22}, :weight=>20, :index=>6},
>>> {:doc=>24, :attributes=>{"beat"=>1, "exact_speed"=>125, "vocals"=>0,
>>> "category_name"=>[], "sphinx_deleted"=>0, "theme_name"=>[],
>>> "subclass_crcs"=>[388159394], "is_loop"=>0, "title_sort"=>21,
>>> "class_crc"=>388159394,
>>> "sphinx_internal_id"=>24}, :weight=>20, :index=>7},
>>> {:doc=>39, :attributes=>{"beat"=>1, "exact_speed"=>160, "vocals"=>0,
>>> "category_name"=>[], "sphinx_deleted"=>0, "theme_name"=>[],
>>> "subclass_crcs"=>[388159394], "is_loop"=>0, "title_sort"=>38,
>>> "class_crc"=>388159394,
>>> "sphinx_internal_id"=>39}, :weight=>20, :index=>8},
>>> {:doc=>42, :attributes=>{"beat"=>1, "exact_speed"=>110, "vocals"=>0,
>>> "category_name"=>[], "sphinx_deleted"=>0, "theme_name"=>[],
>>> "subclass_crcs"=>[388159394], "is_loop"=>0, "title_sort"=>33,
>>> "class_crc"=>388159394,
>>> "sphinx_internal_id"=>42}, :weight=>20, :index=>9},
>>> {:doc=>49, :attributes=>{"beat"=>1, "exact_speed"=>140, "vocals"=>1,
>>> "category_name"=>[], "sphinx_deleted"=>0, "theme_name"=>[],
>>> "subclass_crcs"=>[388159394], "is_loop"=>0, "title_sort"=>13,
>>> "class_crc"=>388159394,
>>> "sphinx_internal_id"=>49}, :weight=>20, :index=>10}]
>>
>>> But now i have to ask: What does this tell me?
>>
>>> I guess
>>
>>>  category_name"=>[]
>>
>>> in the resultset isn't good, so i probably did something wrong  
>>> with my
>>> index-definitions?
>>
>>> On Jun 4, 10:28 pm, Pat Allan <[email protected]> wrote:
>>>> Argh, after all that, I got the syntax wrong. Sorry.
>>
>>>> Try Track.search(...).results[:matches]
>>
>>>> --  
>>>> Pat
>>
>>>> On 04/06/2009, at 4:25 PM, j0llyr0g3r wrote:
>>
>>>>> Ah, ok...:-)
>>
>>>>> But are you sure this is correct?
>>
>>>>> Because:
>>
>>>>>  Track.search('beat impelling', :order => 'category_name ASC')
>>>>> [:matches]
>>
>>>>> gives me:
>>
>>>>>  TypeError: Symbol as array index
>>>>>        from (irb):1:in `[]'
>>>>>        from (irb):1
>>
>>>>> On Jun 4, 4:15 pm, Pat Allan <[email protected]> wrote:
>>>>>> Ah, that's just the email client wrapping my code - put it all on
>>>>>> one
>>>>>> line. Here's another example without the search term (although  
>>>>>> you
>>>>>> should keep that in):
>>>>>>    Track.search(:order => 'category_name ASC')[:matches]
>>
>>>>>> --
>>>>>> Pat
>>
>>>>>> On 04/06/2009, at 7:51 AM, j0llyr0g3r wrote:
>>
>>>>>>> Hey Pat,
>>
>>>>>>> sorry, I am not sure what you mean? Is this:
>>
>>>>>>>> What's the output of the following?
>>>>>>>>   Track.search('beat impelling', :order => 'category_name ASC')
>>>>>>>> [:matches]
>>
>>>>>>> a typo?
>>>>>>> Because i read your peepcode and something like "[:matches]" is
>>>>>>> nowhere mentioned.....
>>
>>>>>>> If not, here is the output in "script/console":
>>
>>>>>>>>> Track.search('beat impelling', :order => 'category_name ASC')
>>>>>>> => [#<Track id: 1, artist: "foobar", title:
>>>>>>> "House", ................
>>>>>>>>> [:matches]
>>>>>>> => [:matches]
>>
>>>>>>> On Jun 4, 12:09 am, Pat Allan <[email protected]> wrote:
>>>>>>>> What's the output of the following?
>>>>>>>>    Track.search('beat impelling', :order => 'category_name  
>>>>>>>> ASC')
>>>>>>>> [:matches]
>>
>>>>>>>> --
>>>>>>>> Pat
>>
>>>>>>>> On 03/06/2009, at 11:44 AM, j0llyr0g3r wrote:
>>
>>>>>>>>> Hi Pat,
>>
>>>>>>>>> and thanks for your insights on this issue. I had to tweak  
>>>>>>>>> your
>>>>>>>>> proposal since
>>
>>>>>>>>>  indexes category.category_translations , :as => :category
>>
>>>>>>>>> won't work as category_translations is a 'real' table.
>>
>>>>>>>>> I defined my indexes now like that:
>>
>>>>>>>>>    has category.category_translations.name, :as
>>>>>>>>> => :category_name
>>>>>>>>>    has theme.theme_translations.name, :as => :theme_name
>>
>>>>>>>>> I reindexed and restarted sphinx.
>>
>>>>>>>>> Unfortunately, it still isn't working:
>>
>>>>>>>>>  Track.search 'beat', :order => 'category_name asc'
>>
>>>>>>>>> now yields a correct resultset, but the sorting still doesn't
>>>>>>>>> work.
>>>>>>>>> The following example illustrates this:
>>
>>>>>>>>>>> Track.search('beat impelling', :order => 'category_name
>>>>>>>>>>> ASC').each
>>>>>>>>>>> {|f| puts f.category.name}
>>>>>>>>> Electro / House
>>>>>>>>> Hip Hop
>>>>>>>>> Funk
>>>>>>>>> Techno / Trance
>>>>>>>>> Rock
>>>>>>>>> Pop
>>>>>>>>> Hip Hop
>>>>>>>>> Electro / House
>>>>>>>>> Rock
>>>>>>>>> Rock
>>>>>>>>> Pop
>>
>>>>>>>>> "Tailing" my development.log at the same time shows this:
>>
>>>>>>>>> Sphinx: beat impelling
>>>>>>>>> Sphinx Result: [1, 2, 13, 15, 18, 20, 22, 24, 39, 42, 49]
>>>>>>>>>  Track Load (4.6ms)   SELECT * FROM `tracks` WHERE
>>>>>>>>> (`tracks`.`id` IN
>>>>>>>>> (1,2,13,15,18,20,22,24,39,42,49))
>>>>>>>>>  Category Load (3.2ms)   SELECT * FROM `categories` WHERE
>>>>>>>>> (`categories`.`id` = 4)
>>>>>>>>>  CategoryTranslation Load (0.9ms)   SELECT * FROM
>>>>>>>>> `category_translations` WHERE
>>>>>>>>> (`category_translations`.category_id
>>>>>>>>> = 4
>>>>>>>>> AND (`category_translations`.`locale` IN ('en','root')))
>>>>>>>>>  Category Load (0.6ms)   SELECT * FROM `categories` WHERE
>>>>>>>>> (`categories`.`id` = 7)
>>>>>>>>>  CategoryTranslation Load (0.8ms)   SELECT * FROM
>>>>>>>>> `category_translations` WHERE
>>>>>>>>> (`category_translations`.category_id
>>>>>>>>> = 7
>>>>>>>>> AND (`category_translations`.`locale` IN ('en','root')))
>>>>>>>>>  Category Load (0.6ms)   SELECT * FROM `categories` WHERE
>>>>>>>>> (`categories`.`id` = 6)
>>>>>>>>>  CategoryTranslation Load (0.8ms)   SELECT * FROM
>>>>>>>>> `category_translations` WHERE
>>>>>>>>> (`category_translations`.category_id
>>>>>>>>> = 6
>>>>>>>>> AND (`category_translations`.`locale` IN ('en','root')))
>>>>>>>>>  Category Load (0.6ms)   SELECT * FROM `categories` WHERE
>>>>>>>>> (`categories`.`id` = 16)
>>>>>>>>>  CategoryTranslation Load (4.4ms)   SELECT * FROM
>>>>>>>>> `category_translations` WHERE
>>>>>>>>> (`category_translations`.category_id =
>>>>>>>>> 16 AND (`category_translations`.`locale` IN ('en','root')))
>>>>>>>>>  Category Load (2.7ms)   SELECT * FROM `categories` WHERE
>>>>>>>>> (`categories`.`id` = 15)
>>>>>>>>>  CategoryTranslation Load (0.8ms)   SELECT * FROM
>>>>>>>>> `category_translations` WHERE
>>>>>>>>> (`category_translations`.category_id =
>>>>>>>>> 15 AND (`category_translations`.`locale` IN ('en','root')))
>>>>>>>>>  Category Load (2.3ms)   SELECT * FROM `categories` WHERE
>>>>>>>>> (`categories`.`id` = 13)
>>>>>>>>>  CategoryTranslation Load (0.8ms)   SELECT * FROM
>>>>>>>>> `category_translations` WHERE
>>>>>>>>> (`category_translations`.category_id =
>>>>>>>>> 13 AND (`category_translations`.`locale` IN ('en','root')))
>>>>>>>>>  Category Load (0.5ms)   SELECT * FROM `categories` WHERE
>>>>>>>>> (`categories`.`id` = 7)
>>>>>>>>>  CategoryTranslation Load (0.8ms)   SELECT * FROM
>>>>>>>>> `category_translations` WHERE
>>>>>>>>> (`category_translations`.category_id
>>>>>>>>> = 7
>>>>>>>>> AND (`category_translations`.`locale` IN ('en','root')))
>>>>>>>>>  Category Load (0.5ms)   SELECT * FROM `categories` WHERE
>>>>>>>>> (`categories`.`id` = 4)
>>>>>>>>>  CategoryTranslation Load (0.8ms)   SELECT * FROM
>>>>>>>>> `category_translations` WHERE
>>>>>>>>> (`category_translations`.category_id
>>>>>>>>> = 4
>>>>>>>>> AND (`category_translations`.`locale` IN ('en','root')))
>>>>>>>>>  Category Load (0.5ms)   SELECT * FROM `categories` WHERE
>>>>>>>>> (`categories`.`id` = 15)
>>>>>>>>>  CategoryTranslation Load (6.6ms)   SELECT * FROM
>>>>>>>>> `category_translations` WHERE
>>
>> ...
>>
>> read more ยป
> >


--~--~---------~--~----~------------~-------~--~----~
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