2011-05-04 2 views
3

수백만 개의 사용자 레코드가 있고 생성시 및 업데이트시 일부 텍스트 필드가 solr로 인덱싱되는 경우 어떻게 솔로로 만들지 않은 몇 가지 레코드를 다시 색인화합니까?solr 작동 중지 시간 동안 변경된 모델 만 다시 색인화하는 가장 좋은 방법은 무엇입니까?

즉 하루 동안 solr이 몇 분간 중단되고 약 300 개의 레코드가 색인 생성되지 않습니다.

나는 다시 인덱스하기 위해 다음 기록의 수백만, 단지 생성 및 업데이트의 큐 테이블에 레코드 ID를 삽입하는 것이 관리하는 단지 300

+3

은 훌륭한 보석을 발견했습니다. https://github.com/bdurand/sunspot_index_queue –

답변

5

좋은 방법, 그리고 싶지 않아 레코드를 인덱싱하기 위해 나중에 실행되는 프로세스가 있어야합니다. 그렇게하면 Solr이 다운되면 어떤 레코드가 처리되지 않았는지 걱정할 필요가 없습니다. 처리가 끝날 때까지 대기열에 계속 머물러있게됩니다. 이것의 장점은 트랜잭션을 완료하기 전에 데이터베이스가 solr 업데이트가 완료되기를 기다릴 필요가 없다는 것입니다. 단점은 Solr이 데이터베이스에있는 것과 완벽하게 동기화되지 않는다는 것입니다. 큐 읽기 프로그램이 요구 사항을 충족시키기 위해 실행되는 빈도를 조정할 수 있습니다.

+0

우수 포인트. 왜이 미션 크리티컬 작업을 실시간으로 수행하게할까요? 다른 대기열이 있습니다. 대기열도되어야합니다. 감사. 이 경우 –

+1

+1. Queuing은 Solr 업데이트를 수행하는 절대적인 방법입니다. 또 다른 접근법은 성공적으로 인덱싱 된 레코드에 indexed_at 타임 스탬프를 저장하고이를 사용하여 업데이트해야하는 배치를 찾는 것입니다. –