public VariantSearchLoadResult searchIndex(Query inputQuery, QueryOptions inputQueryOptions, boolean overwrite)
throws StorageEngineException, IOException, VariantSearchException {
Query query = inputQuery == null ? new Query() : new Query(inputQuery);
QueryOptions queryOptions = inputQueryOptions == null ? new QueryOptions() : new QueryOptions(inputQueryOptions);
VariantDBAdaptor dbAdaptor = getDBAdaptor();
VariantSearchManager variantSearchManager = getVariantSearchManager();
variantSearchManager.create(dbName);
if (!configuration.getSearch().isActive() || !variantSearchManager.isAlive(dbName)) {
throw new StorageEngineException("Solr is not alive!");
}
queryOptions.put(QueryOptions.EXCLUDE, Arrays.asList(VariantField.STUDIES_SAMPLES_DATA, VariantField.STUDIES_FILES));
try (VariantDBIterator iterator = getVariantsToIndex(overwrite, query, queryOptions, dbAdaptor)) {
ProgressLogger progressLogger = new ProgressLogger("Variants loaded in Solr:", () -> dbAdaptor.count(query).first(), 200);
VariantSearchLoadResult load = variantSearchManager.load(dbName, iterator, progressLogger, newVariantSearchLoadListener());
long value = System.currentTimeMillis();
getStudyConfigurationManager().lockAndUpdateProject(projectMetadata -> {
projectMetadata.getAttributes().put(SEARCH_INDEX_LAST_TIMESTAMP.key(), value);
return projectMetadata;
});
return load;
} catch (StorageEngineException | IOException | RuntimeException e) {
throw e;
} catch (Exception e) {
throw new StorageEngineException("Exception closing VariantDBIterator", e);
}
}