Код: Выделить всё
...
int start = 200;
int totalRowsFetched = 809;
getSolrConfigsXmlBuilder().buildDataConfigFile(orgData, dataConfigXmlPath, dbInfo, coreData.getOrgId(), fullImport, useTempView);
while (start < totalRowsFetched) {
int adjustedRows = Math.min(DEFAULT_BATCH_SIZE, totalRowsFetched - start);
ModifiableSolrParams params = new ModifiableSolrParams();
String indexType = SOLR_INDEX_TYPE_FULL;
params.set(SOLR_QUERY_PARAM_QT, SOLR_QUERY_PARAM_DATAIMPORT);
params.set(SOLR_QUERY_PARAM_SYNCHRONOUS, syncImport);// false
if(!fullImport) {
indexType = SOLR_INDEX_TYPE_DELTA;
params.set(SOLR_QUERY_PARAM_CLEAN, Boolean.FALSE.toString());
}
params.set(SOLR_QUERY_PARAM_COMMIT, Boolean.TRUE.toString());
params.set(SOLR_QUERY_PARAM_COMMAND, SOLR_QUERY_PARAM_FULL_IMPORT);
params.set(SOLR_QUERY_PARAM_START, String.valueOf(start));
params.set(SOLR_QUERY_PARAM_ROWS, String.valueOf(adjustedRows));
log.info(String.format("Chunked import: Start=%d, Rows=%d for core %s", start, DEFAULT_BATCH_SIZE, coreData.getCoreName()));
QueryResponse queryResponse;
log.info(String.format("Starting '%s' index of Solr core: [%s]", indexType, coreData.getCoreName()));
queryResponse = getTemplate().getSolrClientOrDefault(coreData.getSolrServerAddress()).query(coreData.getCoreName(), params);
String statusMessages = "";
if(queryResponse != null && queryResponse.getResponse() != null
&& queryResponse.getResponse().get("statusMessages") != null) {
statusMessages = queryResponse.getResponse().get("statusMessages").toString();
}
log.info("Chunk import completed: " + statusMessages);
start += adjustedRows;
}
response = new FipSolrAdminResponse(FipSolrAdminResponse.ResponseCodeType.SUCCESS, "All chunks processed successfully.",String.format("Solr Index for core/collection [%s] has been successfully created", coreData.getCoreName()));
< /code>
Что я попробовал: < /strong> < /p>
- Проверено, что запуск и строки устанавливаются и увеличиваются правильно
в цикле. Он обрабатывает только одну партию.
Вопрос:
Как я могу заставить Solr DIH обрабатывать все страстные пирожные куски, используя этот подход QUERY () () () ()? Есть ли что -то в параметрах DIH или Solr запроса, которые мне не хватает? Должны ли обработка команды DIH или запроса отличаться, чтобы разрешить несколько разбитых импортов в одном процессе?
>
Подробнее здесь: https://stackoverflow.com/questions/796 ... -one-chunk