public QueryResult Query(List<HashedFingerprint> queryFingerprints, QueryConfiguration configuration, IModelService modelService)
{
ConcurrentDictionary<IModelReference, ResultEntryAccumulator> hammingSimilarities;
if (modelService.SupportsBatchedSubFingerprintQuery)
{
hammingSimilarities = GetSimilaritiesUsingBatchedStrategy(queryFingerprints, configuration, modelService);
}
else
{
hammingSimilarities = GetSimilaritiesUsingNonBatchedStrategy(queryFingerprints, configuration, modelService);
}
if (!hammingSimilarities.Any())
{
return QueryResult.EmptyResult();
}
var resultEntries = queryMath.GetBestCandidates(queryFingerprints, hammingSimilarities, configuration.MaxTracksToReturn, modelService, configuration.FingerprintConfiguration);
return QueryResult.NonEmptyResult(resultEntries);
}