public QueryResult Query(Hashes hashes, QueryConfiguration configuration, IModelService modelService) { var groupedQueryResults = GetSimilaritiesUsingBatchedStrategy(hashes, configuration, modelService); if (!groupedQueryResults.ContainsMatches) { return(QueryResult.Empty(hashes)); } var resultEntries = queryMath.GetBestCandidates(groupedQueryResults, configuration.MaxTracksToReturn, modelService, configuration); int totalTracksAnalyzed = groupedQueryResults.TracksCount; int totalSubFingerprintsAnalyzed = groupedQueryResults.SubFingerprintsCount; return(QueryResult.NonEmptyResult(resultEntries, hashes, totalTracksAnalyzed, totalSubFingerprintsAnalyzed)); }
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)); }
public QueryResult Query(List <HashedFingerprint> queryFingerprints, QueryConfiguration configuration, IModelService modelService) { GroupedQueryResults groupedQueryResults; if (modelService.SupportsBatchedSubFingerprintQuery) { groupedQueryResults = GetSimilaritiesUsingBatchedStrategy(queryFingerprints, configuration, modelService); } else { groupedQueryResults = GetSimilaritiesUsingNonBatchedStrategy(queryFingerprints, configuration, modelService); } if (!groupedQueryResults.ContainsMatches) { return(QueryResult.EmptyResult()); } var resultEntries = queryMath.GetBestCandidates(groupedQueryResults, configuration.MaxTracksToReturn, modelService, configuration); int totalTracksAnalyzed = groupedQueryResults.TracksCount; int totalSubFingerprintsAnalyzed = groupedQueryResults.SubFingerprintsCount; return(QueryResult.NonEmptyResult(resultEntries, totalTracksAnalyzed, totalSubFingerprintsAnalyzed)); }