Mercurial > hg > orthanc
diff OrthancServer/ServerContext.cpp @ 3025:039a9d262d64 db-changes
preparing to speed up find in databases
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 17 Dec 2018 17:05:28 +0100 |
parents | 2cbafb5d5a62 |
children | fd587cf51a89 |
line wrap: on
line diff
--- a/OrthancServer/ServerContext.cpp Mon Dec 17 10:26:01 2018 +0100 +++ b/OrthancServer/ServerContext.cpp Mon Dec 17 17:05:28 2018 +0100 @@ -775,6 +775,7 @@ void ServerContext::Apply(ILookupVisitor& visitor, const ::Orthanc::LookupResource& lookup, + const DatabaseLookup& lookup2, size_t since, size_t limit) { @@ -810,6 +811,34 @@ std::vector<std::string> resources, instances; GetIndex().FindCandidates(resources, instances, lookup); +#if 1 + { + std::vector<std::string> resources2, instances2; + + if (lookup.GetLevel() == ResourceType_Patient) + { + GetIndex().ApplyLookupPatients(resources2, instances2, lookup2, limit /* TODO */); + } + else + { + GetIndex().ApplyLookupResources(resources2, instances2, lookup2, lookup.GetLevel(), limit /* TODO */); + } + + std::set<std::string> r; + for (size_t i = 0; i < resources2.size(); i++) + { + r.insert(resources[i]); + } + + assert(r.size() == resources.size()); + + for (size_t i = 0; i < resources.size(); i++) + { + assert(r.find(resources[i]) != r.end()); + } + } +#endif + LOG(INFO) << "Number of candidate resources after fast DB filtering on main DICOM tags: " << resources.size(); assert(resources.size() == instances.size());