SoundFingerprinting.InMemory.SubFingerprintDao.ReadSubFingerprints C# (CSharp) Метод

ReadSubFingerprints() публичный Метод

public ReadSubFingerprints ( long hashes, int thresholdVotes, IEnumerable assignedClusters ) : IEnumerable
hashes long
thresholdVotes int
assignedClusters IEnumerable
Результат IEnumerable
        public IEnumerable<SubFingerprintData> ReadSubFingerprints(long[] hashes, int thresholdVotes, IEnumerable<string> assignedClusters)
        {
            int table = 0;
            var hashTables = storage.HashTables;
            var subFingeprintCount = new Dictionary<IModelReference, int>();
            foreach (var hashBin in hashes)
            {
                if (hashTables[table].ContainsKey(hashBin))
                {
                    foreach (var subFingerprintId in hashTables[table][hashBin])
                    {
                        if (!subFingeprintCount.ContainsKey(subFingerprintId))
                        {
                            subFingeprintCount[subFingerprintId] = 0;
                        }

                        subFingeprintCount[subFingerprintId]++;
                    }
                }

                table++;
            }

            var subFingerprints = subFingeprintCount.Where(pair => pair.Value >= thresholdVotes)
                                                    .Select(pair => storage.SubFingerprints[pair.Key]);
            var clusters = assignedClusters as List<string> ?? assignedClusters.ToList();
            if (clusters.Any())
            {
                return subFingerprints.Where(subFingerprint => subFingerprint.Clusters.Intersect(clusters).Any());
            }

            return subFingerprints;
        }

Same methods

SubFingerprintDao::ReadSubFingerprints ( IEnumerable hashes, int threshold, IEnumerable assignedClusters ) : ISet

Usage Example

Пример #1
0
        public IEnumerable <SubFingerprintData> Query(Hashes hashes, QueryConfiguration config)
        {
            var queryHashes = hashes.Select(_ => _.HashBins).ToList();

            return(queryHashes.Any() ? SubFingerprintDao.ReadSubFingerprints(queryHashes, config) : Enumerable.Empty <SubFingerprintData>());
        }