Okay, this is a little odd then.

TS loops through all attributes and fields to check if they've changed. If 
they're made up of a SQL string (as your full_name field was initially), then 
they always return true. Same goes for any fields or attributes via 
associations. Otherwise, TS calls #{column}_changed? on the object, for each 
column (so your full_name field should be fine).

There's extra logic around attributes, but you don't have any of them. Hence 
why this is a little confusing.

Can you try making a change to an object that isn't related to the model, and 
then - before saving - run the following code:

  user.send(:should_toggle_delta?)

What's the boolean value returned?

-- 
Pat

On 20/06/2010, at 2:45 PM, Lucas Húngaro wrote:

> Rails 2.3.5, TS 1.3.16
> 
> On Jun 19, 10:12 pm, Pat Allan <[email protected]> wrote:
>> What versions of Rails and Thinking Sphinx are you using?
>> 
>> --
>> Pat
>> 
>> On 20/06/2010, at 10:00 AM, Lucas Húngaro wrote:
>> 
>> 
>> 
>>> Did that, but the delta job is still enqueued.
>> 
>>> Here's the update statement:
>> 
>>> UPDATE `users` SET `updated_at` = '2010-06-19 23:50:22',
>>> `perishable_token` = 'tQ53TKnXFsW05TvjPJg5', `last_login_at` =
>>> '2010-06-19 15:04:48', `current_login_at` = '2010-06-19 23:50:22',
>>> `login_count` = 121 WHERE `id` = 36
>> 
>>> And the index definition:
>> 
>>>  define_index do
>>>    # fields
>>>    indexes username, :sortable => true
>>>    indexes index_email, :sortable => true
>>>    indexes [first_name, last_name], :as => :full_name, :sortable =>
>>> true
>> 
>>>    # weights
>>>    set_property :field_weights => {"username" => 100, "full_name" =>
>>> 100, "index_email" => 50}
>> 
>>>    # conditions
>>>    where "active = 1"
>> 
>>>    # delta
>>>    set_property :delta => :delayed
>>>  end
>> 
>>> On Jun 19, 1:35 pm, Pat Allan <[email protected]> wrote:
>>>> The issue here is your full_name field. You can merge columns together 
>>>> automatically:
>> 
>>>>  indexes [first_name, last_name], :as => :full_name, :sortable => true
>> 
>>>> See if that fixes the unnecessary delta issue.
>> 
>>>> Cheers
>> 
>>>> --
>>>> Pat
>> 
>>>> On 20/06/2010, at 12:27 AM, Lucas Húngaro wrote:
>> 
>>>>> Hi Pat, here's the block:
>> 
>>>>> define_index do
>>>>>   # fields
>>>>>   indexes username, :sortable => true
>>>>>   indexes index_email, :sortable => true
>>>>>   indexes "concat(first_name, ' ', last_name)", :as
>>>>> => :full_name, :sortable => true
>> 
>>>>>   # weights
>>>>>   set_property :field_weights => {"username" => 100, "full_name" =>
>>>>> 100, "email" => 50}
>> 
>>>>>   # conditions
>>>>>   where "active = 1"
>> 
>>>>>   # delta
>>>>>   set_property :delta => :delayed
>>>>> end
>> 
>>>>> On Jun 19, 5:45 am, Pat Allan <[email protected]> wrote:
>>>>>> Hi Lucas
>> 
>>>>>> Thinking Sphinx actually tries to be this smart, but it really depends 
>>>>>> on the index definition - if there are fields or attributes where TS 
>>>>>> cannot figure out if they've changed (if you're using Rails 2.0 or 
>>>>>> earlier, or if you have SQL snippets for fields or attributes), then it 
>>>>>> just assumes the delta update is required.
>> 
>>>>>> What does your User model's define_index block look like?
>> 
>>>>>> --
>>>>>> Pat
>> 
>>>>>> On 19/06/2010, at 4:14 PM, Lucas Húngaro wrote:
>> 
>>>>>>> Hi there.
>> 
>>>>>>> I'm using a delta index with delayed_job but a new indexing job is
>>>>>>> enqueued on every update of a record, no matter if the column is
>>>>>>> indexed or not. How can I configure TS to update the delta attribute
>>>>>>> only in case of changes on the indexed columns?
>> 
>>>>>>> Example: every time someone signs in, the app increments a column
>>>>>>> called login_count on the user record. This column is irrelevant for
>>>>>>> searching purposes and it's not being indexed, but triggers a delta
>>>>>>> update anyway.
>> 
>>>>>>> Thanks.
>> 
>>>>>>> --
>>>>>>> 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 
>>>>>>> athttp://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 
>>>>> athttp://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 
>>> athttp://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.
> 

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