2013-03-26 6 views
2

Solr에서 delta-update를 수행 할 때 last_index_time (dataimport.properties에 저장 됨)은 Database의 날짜/시간 소인 열과 비교됩니다. 델타 가져 오기 중 날짜/시간 소인에 대한 다른 방법

  • 우리가 대신 날짜/타임 스탬프의 데이터베이스에서 (순차적으로을 증가 말 'ID') 다른 열을 사용

    그것은 SOLR에 그래서를 구성 할 수 있습니까?
  • last_index_id은 last_index_time 대신 dataimport.properties에 저장됩니까?
  • 델타 가져 오기 중에 '같은 조건을 사용할 수 있습니다. 여기서 id> dataimporter.last_index_id'?

감사합니다.

답변

3

자동 증가 기본 키가있는 추가 전용 테이블이있는 경우를 생각해보십시오. Solr DIH는 당신이 원하는 것을 지원하지 않습니다. 그러나 Solr Wiki DataImportHandlerDeltaQueryViaFullImport에 주어진 예제의 아이디어를 사용하여 시도해 볼 수있는 대체 방법이 있습니다. Solr Wiki DataImportHandlerDeltaQueryViaFullImport에있는 예제에서 아이디어를 시도해 볼 수 있습니다. (Solr 사용자 메일 링리스트에 문의하십시오.)

Solr 색인에서 가장 큰 id을 가져 오기 요청의 매개 변수로 전달할 수 있으면 데이터 가져 오기 쿼리에서이를 사용할 수 있습니다. 먼저 가장 큰 ID를 가져 SOLR에 쿼리를 실행하기 위해 필요한이 들어

:

q=*:*&sort=id desc&rows=1&fl=id 

콜이 MAXID. 당신은 ${dataimporter.request.id}을 사용하여 데이터 구성의 id 요청 PARAM를 얻을 수

/dataimport?command=full-import&id=MAXID 

: 그런 다음 호출 할 때 전체 가져 오기 같은이 ID를 전달합니다. 물론

<entity name="item" 
     pk="id" 
     query="SELECT id, name FROM item 
       WHERE id > '${dataimporter.request.id}'"> 

, 당신은 0 당신이있어 최소 키 값입니다 가정, id=0을 통과하는 모든 문서의 완전한 재 색인 작업을 수행하는 : 데이터-Config.xml의 는 쿼리 같은해야 .

본인 스스로 시도하지 않았지만 실험을 통해 자신이 찾은 내용을 말할 수 있습니다.

(이 모든 것으로 테이블에 타임 스탬프 열을 추가하는 것은 매우 쉽습니다 .MySQL을 사용하는 경우에는 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP으로 타임 스탬프 열을 유지하고 직접 업데이트 할 필요가 없습니다.)

+0

좋은 생각! 나는 "timestamp"가 최선의 선택이라는 것에 완전히 동의한다. 우리가 updations도 처리 할 수 ​​있기 때문이다. 그냥 대안을 찾고 있었어! 어쨌든 고마워! – Mavellin