제목이 말하길, 나는 스핑크스가 어떻게 작동하는지 알고 싶다. 데이터가 업데이트되었고 업데이트 된 행을 어떻게 알 수 있습니까? espacily 마지막 두 가지 질문.스핑크스는 데이터가 업데이트되었고 행이 업데이트되었음을 어떻게 알 수 있습니까?
1
A
답변
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')
...
}
분명하게 들릴까요?
대단히 감사합니다 ~! – tiyee