Everyone Thanks for the quick replies.
Having pagination work would be great, i'll give Pat's idea a try ASAP and will let you know how it went... Pascal On Feb 15, 2:52 am, Pat Allan <[email protected]> wrote: > Ah, maybe you're mistaking has with has_one? > has being a Thinking Sphinx method, and has_one (and has_many) > belonging to ActiveRecord? :) > > In TS, if you're chaining methods, you can't use symbols. > > Can understand the half-asleepness - I'm not completely awake yet, I > think... > > Cheers > > -- > Pat > > On 15/02/2009, at 12:45 PM, Alex Caudill wrote: > > > > > I may be misunderstanding. And also, I suck at breaking at 80 > > chars. Anyway what I was thinking (and this is probably miles > > away from reality) is that AR just calls #to_s on symbol args, > > like: > > > has :friendships[:friend_id] , :as => :friend_ids > > > Which probably doesn't work at all, demonstrating how AR > > is just a black box to me. Anyway I was just admiring how > > some combo of #to_s and #join were being used to parse > > the arguments to #has, #has_many, etc, so you could just > > replace a complex bit of SQL with a nested hash. I dunno. > > > In all fairness, I am half asleep. > > > On Feb 14, 2009, at 7:34 PM, Pat Allan wrote: > > >> Um, not sure what you mean about the symbol and AR...? > >> but I just remembered - the manual 'has' call doesn't set up the > >> relationships in the query Sphinx runs, so you'll need another field > >> or attribute that uses the friendship relationship, ie: > > >> has friendships.friend_id, :as => :friend_ids > > >> Cheers > > >> -- > >> Pat > > >> On 15/02/2009, at 12:30 PM, Alex Caudill wrote: > > >>> Nice trick Pat. I had no idea that ActiveRecord just takes the > >>> symbol > >>> and converts it into a string when you specify a relationship, I > >>> thought > >>> there was all kinds of kung-fu involved. That's awesome, I'll > >>> definitely > >>> find a few places to put that technique to use. > > >>> On Feb 14, 2009, at 7:23 PM, Pat Allan wrote: > > >>>> But, if you want pagination to work straight out of the box, let's > >>>> put > >>>> named_scope aside for a moment... > > >>>> what you need is a custom attribute for your filter... (I'm > >>>> guessing > >>>> table and column names, and using mysql functions) > > >>>> has "IF(private = 1, '0', GROUP_CONCAT(friendships.friend_id > >>>> SEPARATOR > >>>> ','))", :as => :user_limit, :type => :multi > > >>>> And then: > > >>>> # This will match 0 for public users, and the user id for private > >>>> users > >>>> User.search "whatever", :with => {:user_limit => [0, user.id]} > > >>>> Give that a shot. > > >>>> Cheers > > >>>> -- > >>>> Pat > > >>>> On 15/02/2009, at 11:51 AM, Alex Caudill wrote: > > >>>>> Hey Pascal, > > >>>>> You could use a named_scope, e.g., > >>>>> User.publicly_visible.search(conditions), but then you'd have to > >>>>> manually do pagination on the results, like > >>>>> User.publicly_visible.search(conditions).paginate(:per_page => > >>>>> 10, :page => 1) - there may be performance problems with this, I > >>>>> don't > >>>>> know if > >>>>> ActiveRecord lazily loads the rest of the User table columns or > >>>>> what, > >>>>> but I'm using a similar approach with chained named scopes and it > >>>>> seems to perform admirably so far. > > >>>>> Hope this helps! > > >>>>> On Feb 14, 2009, at 2:37 PM, pascal wrote: > > >>>>>> Hi > > >>>>>> I want to convert a search system (just SQL queries) to sphinx/TS > >>>>>> and > >>>>>> have some troubles, and i hope someone can help me. > > >>>>>> The aim is to search users by first/lastname and a description > >>>>>> text > >>>>>> field. A user has many friends. Depending on the users privacy > >>>>>> settings his visibility in the search by first/lastname is > >>>>>> restricted > >>>>>> to his friends or to everyone. Search by description is never > >>>>>> restricted. > > >>>>>> Maybe an example can clear things up: > >>>>>> User "Santa Claus" has "search privacy" turned on. If you are a > >>>>>> friend > >>>>>> you can still find him by the search "Santa". If you aren't a > >>>>>> friend, > >>>>>> then you can't find him with "Santa" but with "Christmas" because > >>>>>> "Christmas" appears on a his description text. > > >>>>>> So it something like "find users where search terms matches AND > >>>>>> (privacy off OR privacy on AND his ID is in in the list of my > >>>>>> friends > >>>>>> ids)". > > >>>>>> I got simple search up and running real quick but is Sphinx/TS > >>>>>> the > >>>>>> right tool for this? How would i go about this? > > >>>>>> Thanks for your help! > > >>>>>> Pascal --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
