2013-12-12 1 views

답변

0

스핑크스는 데이터가 변경 될 때 추측 할 수 없으므로 예를 들어 cronjob으로 새 데이터를 확인하도록 알려야합니다. 예를 보여 드리겠습니다 :

스핑크스를 사용하여 사용자를 색인화한다고 가정 해 봅시다. 매일 사용자의 모든 데이터를 처음부터 다시 색인 할 수있는 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