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