示例#1
0
        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));
        }
示例#2
0
        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));
        }
示例#3
0
        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));
        }