Hi Pat, Thanks very much.
*field()* is a MYSQL function that I used here to sort based on given order of IDs http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_field SELECT id from users WHERE id IN (1, 2, 3) ORDER BY field(id,1,3,2); So, I assume if we pass the field() function to :sql => {:order => '* field(id,#{user_ids.join(',')})*'}, that should help me to get the order in the order of IDs provided. Please correct me if i am wrong. Thanks, Regards, Sabarish S On Tue, Oct 8, 2013 at 5:00 AM, Pat Allan <[email protected]> wrote: > Hi Sabarish > > I'm afraid Sphinx doesn't have anything like the field() function - so > there's no way of having that sorting work dynamically within Sphinx. If > the order is quite specific and can be stored in the database, then you > could use that value as an attribute for Sphinx ordering… but I'm guessing > that's not the case. > > As for why :sql => {:order … } isn't working, it turns out there's a bug… > which I've just fixed. To use the latest version, put this in your Gemfile: > > gem 'thinking-sphinx', '~> 3.0.5', > :git => 'git://github.com/pat/thinking-sphinx.git', > :branch => 'master', > :ref => '5dd6f4bfdd' > > -- > Pat > > On 08/10/2013, at 5:09 AM, Sabarish Sankar <[email protected]> > wrote: > > > A small update, > > > > user_ids = [1, 3, 2] > > > > I tried with :sql => {:order => "field(id,#{user_ids.join(',')})"} > > > > but that still does not give me the result in the expected sorting > order.I see that we can pass :sql => :order in options when we need to sort > on sql. > > > > User.where(:id => [1, 2, 3]).order("field(id,#{user_ids.join(',')})") > gives me proper results as expected > > > > Please correct me if i am doing anything wrong here. > > > > Thanks, > > > > > > > > > > Regards, > > Sabarish S > > > > > > On Mon, Oct 7, 2013 at 8:02 PM, JSWorld <[email protected]> > wrote: > > Hi Pat, > > > > I have a requirement where I want to get results based on the order of > IDs that i pass to sphinx: > > > > I did sorting and filtering with ruby and then find order of user_ids to > be > > > > user_ids = [1, 3, 2] > > > > Now, I want to apply search on top of this like : > > > > User.search_for_ids("Test", {:with => {:page => params[:page], :per_page > => 25, :sphinx_internal_id => user_ids}, :order => user_ids}) > > > > Is there a way to preserve the order with respect to user_ids ? Any help > is much appreciated. > > > > Thanks, > > > > > > -- > > You received this message because you are subscribed to the Google > Groups "Thinking Sphinx" group. > > To unsubscribe from this group and stop receiving emails from it, send > an email to [email protected]. > > To post to this group, send email to [email protected]. > > Visit this group at http://groups.google.com/group/thinking-sphinx. > > For more options, visit https://groups.google.com/groups/opt_out. > > > > > > -- > > You received this message because you are subscribed to the Google > Groups "Thinking Sphinx" group. > > To unsubscribe from this group and stop receiving emails from it, send > an email to [email protected]. > > To post to this group, send email to [email protected]. > > Visit this group at http://groups.google.com/group/thinking-sphinx. > > For more options, visit https://groups.google.com/groups/opt_out. > > -- > You received this message because you are subscribed to the Google Groups > "Thinking Sphinx" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/thinking-sphinx. > For more options, visit https://groups.google.com/groups/opt_out. > -- You received this message because you are subscribed to the Google Groups "Thinking Sphinx" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/thinking-sphinx. For more options, visit https://groups.google.com/groups/opt_out.
