public void checkVariantSearchIndex(VariantDBAdaptor dbAdaptor) throws IOException, VariantSearchException, StorageEngineException { QueryOptions queryOptions = new QueryOptions(QueryOptions.LIMIT, 1000); Query query = new Query(); TreeSet<Variant> variantsFromSearch = new TreeSet<>(Comparator.comparing(Variant::toString)); TreeSet<Variant> variantsFromDB = new TreeSet<>(Comparator.comparing(Variant::toString)); variantsFromSearch.addAll(variantStorageEngine.getVariantSearchManager().query(DB_NAME, query, queryOptions).getResult()); variantsFromDB.addAll(dbAdaptor.get(query, queryOptions).getResult()); assertEquals(variantsFromDB.size(), variantsFromSearch.size()); assertEquals(variantsFromDB.size(), variantStorageEngine.getVariantSearchManager().count(DB_NAME, query)); Iterator<Variant> variantsFromSearchIterator = variantsFromSearch.iterator(); Iterator<Variant> variantsFromDBIterator = variantsFromDB.iterator(); for (int i = 0; i < variantsFromDB.size(); i++) { Variant variantFromDB = variantsFromSearchIterator.next(); Set<String> studiesFromDB = variantFromDB.getStudies().stream().map(StudyEntry::getStudyId).collect(Collectors.toSet()); Variant variantFromSearch = variantsFromDBIterator.next(); Set<String> studiesFromSearch = variantFromSearch.getStudies().stream().map(StudyEntry::getStudyId).collect(Collectors.toSet()); assertEquals(variantFromDB.toString(), variantFromSearch.toString()); assertEquals(variantFromDB.toString(), studiesFromDB, studiesFromSearch); } }
public QueryResult<Long> count(Query query) throws StorageEngineException { query = preProcessQuery(query, null); if (!doQuerySearchManager(query, new QueryOptions(QueryOptions.COUNT, true))) { return getDBAdaptor().count(query); } else { try { StopWatch watch = StopWatch.createStarted(); long count = getVariantSearchManager().count(dbName, query); int time = (int) watch.getTime(TimeUnit.MILLISECONDS); return new QueryResult<>("count", time, 1, 1, "", "", Collections.singletonList(count)); } catch (IOException | VariantSearchException e) { throw new VariantQueryException("Error querying Solr", e); } } }
if (doQuerySearchManager(query, new QueryOptions(QueryOptions.COUNT, true))) { approxCount = false; count = getVariantSearchManager().count(dbName, query); } else { sampling = options.getInt(APPROXIMATE_COUNT_SAMPLING_SIZE.key(),