Great to hear :)

-- 
Pat

On 09/11/2012, at 7:27 AM, Mike C. wrote:

> Hey Pat! My apologies I didn't read you're last sentence this morning stating 
> the difference between MYSQL and Postgresql for the query. I was using mysql 
> and I was planning on switching over to postgres and now that I did It works 
> perfect =) thx much!
> 
> On Thursday, November 8, 2012 9:53:52 AM UTC-5, Mike C. wrote:
> Thanks much for the response! You're right I removed the vote_ids attribute 
> and also the has_many association since it seems the association is added 
> with the acts_as_voteable call on the top of model and the votes are still 
> working fine for Most amount of ratings and Least amount of ratings.
> 
> Although I haven't had luck yet with:
> 
> has "SUM(CASE vote WHEN TRUE THEN 1.0 ELSE -1.0 END)", :as => :plusminus, 
> :type => :float
> 
> It seems like it should work the way you have it, although when I filter the 
> results it doesn't show the top rated results.
> 
> I get something like this:
> 
> Person1        Person2         Person3         Person4
> 
> +5     +1      +2      +8
> 
> Instead of:
> 
> Person4        Person1         Person3         Person2
> 
> +8     +5      +2      +1
> 
> (Think I used a different email for the response and it wasn't showing up on 
> the board so reposting it here.)
> 
> On Thursday, November 8, 2012 4:13:39 AM UTC-5, Pat Allan wrote:
> The join call should be enough... shouldn't be any different to adding in the 
> vote_ids attribute as well.
> As for highest/lowest rating, this should do the trick:
> 
>   has "SUM(CASE vote WHEN TRUE THEN 1.0 ELSE -1.0 END)", :as => :plusminus, 
> :type => :float
> 
> It's important to note that Sphinx integer attributes are unsigned, so you 
> wouldn't get totals less than zero working properly - hence using floats 
> instead. If you're using MySQL, then you can use an IF function instead, or 
> stick with the case change TRUE to 1.
> 
> Anything else you're still stuck on? Sorry I've been slow to respond, things 
> have been flat out here.
> 
> -- 
> Pat
> 
> On 08/11/2012, at 1:04 PM, Mike C. wrote:
> 
> > Well It appears that I got this one to work today, after browsing the TS 
> > group and looking at more COUNT queries. I needed to add "has votes(:id), 
> > :as => :vote_ids) first:
> > 
> > define_index do
> > 
> >   has votes(:id), as: :vote_ids
> >   has "COUNT(DISTINCT votes.id)", as: :rating_count, type: :integer
> >   join votes
> > 
> > end
> > 
> > On Wednesday, November 7, 2012 2:19:09 PM UTC-5, Mike C. wrote:
> > Thumbs_up generates a votes model:
> > 
> > class Vote < ActiveRecord::Base
> > 
> >   scope :for_voter, lambda { |*args| where(["voter_id = ? AND voter_type = 
> > ?", args.first.id, args.first.class.name]) }
> >   scope :for_voteable, lambda { |*args| where(["voteable_id = ? AND 
> > voteable_type = ?", args.first.id, args.first.class.name]) }
> >   scope :recent, lambda { |*args| where(["created_at > ?", (args.first || 
> > 2.weeks.ago)]) }
> >   scope :descending, order("created_at DESC")
> > 
> >   belongs_to :voteable, :polymorphic => true
> >   belongs_to :voter, :polymorphic => true
> > 
> >   attr_accessible :vote, :voter, :voteable
> > 
> >   # Comment out the line below to allow multiple votes per user.
> >   validates_uniqueness_of :voteable_id, :scope => [:voteable_type, 
> > :voter_type, :voter_id]
> > 
> > end
> > 
> > and a vote migration containing:
> > 
> > create_table "votes", :force => true do |t|
> >   t.boolean  "vote",          :default => false
> >   t.integer  "voteable_id",                      :null => false
> >   t.string   "voteable_type",                    :null => false
> >   t.integer  "voter_id"
> >   t.string   "voter_type"
> >   t.datetime "created_at",                       :null => false
> >   t.datetime "updated_at",                       :null => false
> > end
> > 
> > I added this to my person model to filter by Most/Least amount of ratings:
> > 
> > has_many :votes, as: :voteable
> > 
> > define_index do
> > 
> >   has "COUNT(votes.id)", as: :rating, type: :integer  
> >   join votes
> > 
> > end
> > 
> > Although it isn't filtering the results by the number of votes that person 
> > has correctly.
> > 
> > The other issue is figuring out how to index the Highest and Lowest Rating. 
> > (AKA plusminus method in thumbs_up)
> > 
> > plusminus = (votes_for - votes_against)
> > 
> > votes_for is total votes that are equal to 1 for voteable_id and 
> > voteable_type
> > votes_against is total votes that are equal to 0 for voteable_id and 
> > voteable_type
> > 
> > Anyone able to make sense of this in sql for the attributes to index =)
> > 
> > On Monday, November 5, 2012 10:56:18 PM UTC-5, Mike C. wrote:
> > Anyone have experience with indexing vote ranks with the Thumbs_up gem?
> > 
> > I'm trying to figure out these 4 attributes:
> > 
> > has Highest Rating (the plusminus tally in gem) DESC
> > has Lowest Rating (the plusminus tally in gem) ASC
> > has Most Ratings (total amount of votes) DESC
> > has Least Ratings (total amount of votes) ASC
> > 
> > -- 
> > You received this message because you are subscribed to the Google Groups 
> > "Thinking Sphinx" group.
> > To view this discussion on the web visit 
> > https://groups.google.com/d/msg/thinking-sphinx/-/SDTFBQML9nQJ.
> > 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 view this discussion on the web visit 
> https://groups.google.com/d/msg/thinking-sphinx/-/oX6u-2OOl8EJ.
> 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