I'm trying to index an aggregate function result on a model.  There's
a User class with many Payments.  Each payment has an amount_cents
column.

class User < ActiveRecord::Base
  has_many :payments

  define_index do
    indexes :name
    has :created_at
    has "SUM(payments.amount_cents)", :as => :total_amount, :type
=> :integer
    join payments
  end
end

The values that I'm seeing indexed are just totally wrong.

ree-1.8.7-2010.02 > client =
ThinkingSphinx::Configuration.instance.client
ree-1.8.7-2010.02 > first_match = client.query("Pamela", "user")
[:matches].first
ree-1.8.7-2010.02 > first_match[:attributes]["total_flow"]
=> 10995990
ree-1.8.7-2010.02 > first_match[:attributes]["sphinx_internal_id"]
=> 64
ree-1.8.7-2010.02 > User.find(64).name
 => "Pamela Woods"
ree-1.8.7-2010.02 > User.find(64).payments.sum(:amount_cents)
 => 150630

I tried the SQL that is generated in my development.sphinx.conf and it
looks like it should be working correctly.  Is there a trick to
working with aggregate functions when indexing? I suppose I could
denormalize the total amount onto user to make it easier to index. Is
there a better way?

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