Package com.easydesk.lucene.om
Class OmReindexer
java.lang.Object
com.easydesk.lucene.om.OmReindexer
DB 의 모든 AttributeValue, Attachment, Query 를 다시 index 한다.
이전 Lucene (4.x) index 는 Lucene 10 에서 읽을 수 없으므로 처음 전환할 때, 또는 index 가 DB 와 맞지 않을 때 사용한다.
- primary key 순서로
easydesk.lucene.om.reindex-batch-size(기본 500) 건씩 읽는다. (keyset paging) - 삭제(removed) 된 행은 읽지 않는다.
clear=true로 실행하면 기존 document 를 먼저 모두 지운다. - 개별 객체의 index 오류는 건너뛰고 수를 센다.
easydesk.lucene.om.reindex-on-startup=true이면 Spring context 가 뜬 뒤 background thread 에서 전체 re-index (clear) 를 한 번 실행한다.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final record대상 별 re-index 결과static interface한 page 를 읽는다.static final recordre-index 실행 상태 (관리 화면 표시용) -
Constructor Summary
ConstructorsConstructorDescriptionOmReindexer(OmIndexer omIndexer, SearchService searchService, int batchSize, boolean onStartup) Creates a new OmReindexer. -
Method Summary
Modifier and TypeMethodDescriptionbooleanvoidonContextRefreshed(org.springframework.context.event.ContextRefreshedEvent event) easydesk.lucene.om.reindex-on-startup=true이면 background 로 전체 re-index 를 실행한다.reindex(String name, OmReindexer.Pager<T> pager, ToLongFunction<T> idOf) 한 대상을 page 단위로 re-index 한다.reindexAll(boolean clear) 전체 re-index 를 실행한다.booleanstartAsync(boolean clear) background thread 에서 전체 re-index 를 시작한다.
-
Constructor Details
-
OmReindexer
public OmReindexer(OmIndexer omIndexer, SearchService searchService, @Value("${easydesk.lucene.om.reindex-batch-size:500}") int batchSize, @Value("${easydesk.lucene.om.reindex-on-startup:false}") boolean onStartup) Creates a new OmReindexer.- Parameters:
omIndexer- 동기 indexersearchService- commit/deleteAll 용batchSize- page sizeonStartup- context 가 뜬 뒤 전체 re-index 를 실행할지
-
-
Method Details
-
onContextRefreshed
@EventListener public void onContextRefreshed(org.springframework.context.event.ContextRefreshedEvent event) easydesk.lucene.om.reindex-on-startup=true이면 background 로 전체 re-index 를 실행한다.- Parameters:
event- context refreshed
-
startAsync
public boolean startAsync(boolean clear) background thread 에서 전체 re-index 를 시작한다. (관리 화면 버튼 등)- Parameters:
clear- true 이면 기존 document 를 먼저 모두 지운다.- Returns:
- 시작하였으면 true, 이미 실행 중이면 false
-
getStatus
- Returns:
- 마지막 (또는 현재) 실행 상태
-
isRunning
public boolean isRunning()- Returns:
- re-index 가 실행 중인지
-
reindexAll
전체 re-index 를 실행한다.- Parameters:
clear- true 이면 기존 document 를 먼저 모두 지운다.- Returns:
- 대상 이름 → 결과
- Throws:
Exception- DB 또는 index 오류IllegalStateException- 이미 실행 중인 경우
-
reindex
public <T> OmReindexer.Count reindex(String name, OmReindexer.Pager<T> pager, ToLongFunction<T> idOf) throws Exception 한 대상을 page 단위로 re-index 한다.- Type Parameters:
T- OM type- Parameters:
name- log 용 이름pager- page loaderidOf- primary key- Returns:
- 결과
- Throws:
Exception- DB 또는 index 오류
-