2013-12-12 46 views

回答

0

sphinx無法猜測數據何時發生變化,您需要告訴他用cronjob檢查新數據。讓我給你看一個例子:

假設你使用sphinx爲用戶建立索引,每天都會有一個cronjob,它將從頭開始重新索引用戶的所有數據(這意味着索引被銷燬並完全重新創建),然後,每5分鐘,你會有另一個cronjob只索引新的數據(三角洲)。

因此,在您的用戶表中,您需要有一個列以瞭解上次更新的時間,我們稱之爲updated_at。

然後,您的delta_index將檢查自上次檢查後已更新的用戶。

source user 
{ 
    ... 
    sql_query_pre = REPLACE INTO sph_counter SELECT 'user', @max_stamp:=UNIX_TIMESTAMP(MAX(updated_at)) FROM users 
    sql_query = SELECT user_id, email FROM users WHERE updated_at <= FROM_UNIXTIME(@max_stamp) 
    ... 
} 

source user_delta : user 
{ 
    ... 
    sql_query = SELECT user_id, email FROM users WHERE updated_at >= (SELECT FROM_UNIXTIME(MAX_ID) FROM sph_counter WHERE INDEX_NAME = 'user') 
    ... 

} 

這聽起來很清楚嗎?

+0

非常感謝你〜! – tiyee